Browse Source

Merge remote-tracking branch 'origin/test'

zhouna 5 years atrás
parent
commit
5aa8a9c2bf
100 changed files with 13945 additions and 921 deletions
  1. 362 0
      src/css/abnormal.less
  2. 104 64
      src/css/console.less
  3. 377 0
      src/css/dayDetail.less
  4. 495 0
      src/css/deptConsole.less
  5. 376 0
      src/css/deptScoreDetail.less
  6. 376 0
      src/css/deptScoreDetailControl.less
  7. 625 383
      src/css/index.less
  8. 27 28
      src/css/itemManager.less
  9. 379 0
      src/css/jiaji.less
  10. 47 55
      src/css/login.less
  11. 30 17
      src/css/moduleManager.less
  12. 293 0
      src/css/mukuai.less
  13. 379 0
      src/css/partDetail.less
  14. 379 0
      src/css/partDetailControl.less
  15. 380 0
      src/css/payDetail.less
  16. 38 35
      src/css/qcList.less
  17. 35 34
      src/css/qcListDept.less
  18. 34 33
      src/css/qcListPerson.less
  19. 69 28
      src/css/qcScore.less
  20. 295 0
      src/css/quexianDetail.less
  21. 295 0
      src/css/quexianDetailControl.less
  22. 380 0
      src/css/quexianXQ.less
  23. 138 3
      src/css/reset.less
  24. 5 3
      src/css/roleManager.less
  25. 295 0
      src/css/tiaomu.less
  26. 84 0
      src/html/abnormal.html
  27. 2 2
      src/html/console.html
  28. 62 0
      src/html/dayDetail.html
  29. 124 0
      src/html/deptConsole.html
  30. 74 0
      src/html/deptScoreDetail.html
  31. 77 0
      src/html/deptScoreDetailControl.html
  32. 42 16
      src/html/index.html
  33. 1 0
      src/html/itemManager.html
  34. 53 0
      src/html/jiaji.html
  35. 25 22
      src/html/login.html
  36. 15 11
      src/html/moduleManager.html
  37. 62 0
      src/html/mukuai.html
  38. 62 0
      src/html/mukuaiControl.html
  39. 65 0
      src/html/partDetail.html
  40. 67 0
      src/html/partDetailControl.html
  41. 75 0
      src/html/payDetail.html
  42. 23 13
      src/html/qcList.html
  43. 33 24
      src/html/qcListDept.html
  44. 41 32
      src/html/qcListPerson.html
  45. 34 9
      src/html/qcScore.html
  46. 53 0
      src/html/quexianDetail.html
  47. 53 0
      src/html/quexianDetailControl.html
  48. 70 0
      src/html/quexianXQ.html
  49. 60 0
      src/html/tiaomu.html
  50. 60 0
      src/html/tiaomuControl.html
  51. 1 0
      src/html/userManager.html
  52. BIN
      src/images/ba.png
  53. BIN
      src/images/ba_a.png
  54. BIN
      src/images/data.png
  55. BIN
      src/images/data_a.png
  56. BIN
      src/images/down.png
  57. BIN
      src/images/head.png
  58. BIN
      src/images/home.png
  59. BIN
      src/images/home_a.png
  60. BIN
      src/images/icon_down.png
  61. BIN
      src/images/index.png
  62. BIN
      src/images/index_a.png
  63. BIN
      src/images/inhis.png
  64. BIN
      src/images/inhis_a.png
  65. BIN
      src/images/item.png
  66. BIN
      src/images/item_a.png
  67. BIN
      src/images/loginBg2.png
  68. BIN
      src/images/module.png
  69. BIN
      src/images/module_a.png
  70. BIN
      src/images/out.png
  71. BIN
      src/images/out_a.png
  72. BIN
      src/images/prod.png
  73. BIN
      src/images/prod_a.png
  74. BIN
      src/images/qxgl.png
  75. BIN
      src/images/qxgl_a.png
  76. BIN
      src/images/total.png
  77. BIN
      src/images/total_a.png
  78. BIN
      src/images/un.png
  79. BIN
      src/images/un_a.png
  80. BIN
      src/images/up.png
  81. 530 0
      src/js/abnormal.js
  82. 54 1
      src/js/api.js
  83. 191 46
      src/js/console.js
  84. 548 0
      src/js/dayDetail.js
  85. 743 0
      src/js/deptConsole.js
  86. 560 0
      src/js/deptScoreDetail.js
  87. 544 0
      src/js/deptScoreDetailControl.js
  88. 48 4
      src/js/index.js
  89. 7 5
      src/js/itemManager.js
  90. 530 0
      src/js/jiaji.js
  91. 9 1
      src/js/login.js
  92. 1 1
      src/js/modal.js
  93. 17 35
      src/js/moduleManager.js
  94. 460 0
      src/js/mukuai.js
  95. 459 0
      src/js/mukuaiControl.js
  96. 550 0
      src/js/partDetail.js
  97. 539 0
      src/js/partDetailControl.js
  98. 552 0
      src/js/payDetail.js
  99. 72 16
      src/js/qcList.js
  100. 0 0
      src/js/qcListDept.js

+ 362 - 0
src/css/abnormal.less

@@ -0,0 +1,362 @@
+@import './reset.less';
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: #fff;
+}
+.abnormal {
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 104 - 64
src/css/console.less

@@ -1,20 +1,23 @@
+@import './reset.less';
+
 body.console {
   overflow: auto;
+  background: @activeBg;
 }
 .echarts {
   width: 100%;
-  height: 300px;
+  height: 292px;
   padding: 0 15px;
 }
 .barChartPay {
   width: 100%;
-  height: 300px;
+  height: 261px;
 }
 .emptyCircle {
   width: 35%;
-  height: 200px;
+  height: 135px;
   float: left;
-  margin-top: 32px;
+  margin-top: 38px;
 }
 #emptyCircleB {
   margin-top: 50px;
@@ -25,8 +28,9 @@ body.console {
 .partWrap {
   // overflow: auto;
   height: auto;
-  background: #f5f5f5;
+  background: @activeBg;
   min-width: 1185px;
+  padding: 10px;
   ul {
     padding: 0 40px;
   }
@@ -68,10 +72,12 @@ body.console {
   .title {
     font-size: 16px;
     font-weight: bold;
-    border-bottom: 1px solid #E2E5EF;
-    height: 36px;
-    line-height: 36px;
+    color: @themeFontClr;
+    border-bottom: 1px solid @themeBorderClr;
+    height: 40px;
+    line-height: 40px;
     padding-left: 15px;
+    cursor: pointer;
   }
 }
 .swiperWrap {
@@ -80,7 +86,7 @@ body.console {
 }
 .grayLine {
   height: 10px;
-  background-color: #f5f5f5;
+  background-color: @activeBg;
 }
 .partTitleT {
   height: 44px;
@@ -91,7 +97,7 @@ body.console {
   right: 0;
   width: 100%;
   box-sizing: border-box;
-  background-color: #fff;
+  background-color: @themeColor;
   z-index: 20;
   height: 44px;
   line-height: 44px;
@@ -99,23 +105,26 @@ body.console {
   font-size: 14px;
   font-weight: bold;
   letter-spacing: 1px;
+  min-width: 100px;
   p {
     display: inline-block;
     font-size: 16px;
+    color: @themeFontClr;
     span {
       font-size: 16px;
+      color: #fff;
     }
   }
   .dateDetail {
     font-size: 12px;
-    color: #777777;
+    color: @themeFontClr;
     margin-right: 30px;
     font-weight: normal;
   }
   .monthYear {
     float: right;
     margin-right: 20px;
-    border: 1px solid #5A8EEE;
+    border: 1px solid #00A1FF;
     height: 28px;
     line-height: 28px;
     border-radius: 4px;
@@ -130,12 +139,12 @@ body.console {
       text-align: center;
       font-weight: normal;
     }
-    .mon {
-      color: #5A8EEE;
-    }
     .year {
+      background-color: #00A1FF;
       color: #fff;
-      background-color: #5A8EEE;
+    }
+    .mon {
+      color: @themeFontClr;
     }
   }
 }
@@ -148,39 +157,40 @@ body.console {
 .pubEchart {
   width: 100%;
   display: inline-block;
-  margin-bottom: 10px;
-  background-color: #fff;
-  border-top: 10px solid #f5f5f5;
+  /*margin-bottom: 10px;*/
+  background-color: @themeColor;
+  border-top: 10px solid @activeBg;
 }
 .pubEchartB {
   width: 55%;
   display: inline-block;
   margin-bottom: 10px;
   background-color: #fff;
-  border-top: 10px solid #f5f5f5;
-  border-left: 10px solid #f5f5f5;
+  border-top: 10px solid @activeBg;
+  border-left: 10px solid @activeBg;
   box-sizing: border-box;
 }
 .paymoney {
   box-sizing: border-box;
   position: relative;
+  background: @themeColor;
 }
 .dept {
   box-sizing: border-box;
 }
 .circle {
-  height: 304px;
+  height: 256px;
   width: 100%;
   display: inline-block;
-  background-color: #fff;
   box-sizing: border-box;
   position: relative;
+  background: @themeColor;
 }
 .circleB {
-  height: 350px;
+  height: 258px;
   width: 45%;
   display: inline-block;
-  background-color: #fff;
+  background-color: @themeColor;
   box-sizing: border-box;
   position: relative;
 }
@@ -196,14 +206,14 @@ body.console {
   right: 0;
   padding-right: 30px;
   box-sizing: border-box;
-  max-height: 250px;
-  overflow: auto;
+  max-height: 180px;
+  overflow: hidden;
   table {
     width: 100%;
   }
   .explainLi {
-    height: 30px;
-    line-height: 30px;
+    height: 26px;
+    line-height: 26px;
     span {
       display: inline-block;
     }
@@ -222,13 +232,14 @@ body.console {
         overflow: hidden;
         text-overflow: ellipsis;
         white-space: nowrap;
+        color: @themeFontClr;
       }
       .smp {
         width: 100px;
       }
     }
     .deptNum {
-      color: #333;
+      color: @themeFontClr;
       font-size: 16px;
       font-weight: bold;
       padding-right: 10px;
@@ -236,7 +247,7 @@ body.console {
       text-align: right;
     }
     .percent {
-      color: #777;
+      color: @themeFontClr;
       width: 40px;
     }
   }
@@ -245,15 +256,17 @@ body.console {
 
 .part01 {
   width: 28%;
-  background-color: #fff;
-  border-right: 10px solid #f5f5f5;
+  background-color: @themeColor;
+  border-right: 10px solid @activeBg;
   box-sizing: border-box;
   ul {
-    padding: 40px 20px;
-    border-bottom: 10px solid #f5f5f5;
+    padding: 28px 20px;
+    border-bottom: 10px solid @activeBg;
+    /*background: @themeColor;*/
     li {
       float: left;
       width: 33.33%;
+      color: #fff;
       border-left: 3px solid #F2637B;
       height: 72px;
       box-sizing: border-box;
@@ -268,48 +281,58 @@ body.console {
   }
   
   .defect {
-    background-color: #fff;
-    height: 452px;
+    /*background-color: @themeColor;*/
+    height: 385px;
     overflow: hidden;
     .list {
-      padding: 15px 5px;
+      padding: 13px 5px;
       width: 100%;
       box-sizing: border-box;
-      overflow: auto;
+      overflow-y: auto;
+      overflow-x: hidden;
       height: 405px;
     }
-    .thead {
+    /*.thead {
       td {
         color: #51649C;
       }
-    }
+    }*/
     .qtable {
       width: 100%;
       overflow: auto;
+      .thead{
+        background: #142753;
+      }
     }
     td {
-      padding: 7px 10px;
+      padding: 8px 10px;
+      color: @themeFontClr;
       i {
         width: 17px;
         height: 17px;
         line-height: 17px;
         border-radius: 8px;
-        background-color: #999;
+        background-color: #526186;
         color: #fff;
         display: inline-block;
         text-align: center;
         font-size: 12px;
       }
     }
-    tr {
-      border-bottom: 1px solid #f5f5f5;
-      box-sizing: border-box;
+    tr:nth-child(2n+1) {
+      background: #283B69;
+      /*border-bottom: 1px solid @activeBg;
+      box-sizing: border-box;*/
     }
     .td01 {
-      width: 30px;
+      min-width: 30px;
+      text-align: center;
+    }
+    .td02name {
+      min-width: 113px;
+      color: @themeFontClr;
     }
     .td02 {
-      
     }
     .td03 {
       width: 40px;
@@ -320,12 +343,12 @@ body.console {
   }
 }
 .part02{
-  border-right: 10px solid #f5f5f5;
+  border-right: 10px solid @activeBg;
   box-sizing: border-box;
   width: 39%;
-  background-color: #fff;
+  background-color: @themeColor;
   .bingli {
-    padding: 20px;
+    padding: 10px 20px;
     li {
       float: left;
       width: 23%;
@@ -333,38 +356,43 @@ body.console {
     }
     .fst {
       // border-right: 1px solid #E2E5EF;
+      border-right: 1px solid @themeBorderClr;
       box-sizing: border-box;
       width: 30%;
     }
   }
   .bingliLis {
-    border-top: 1px solid #E2E5EF;
-    padding: 20px 30px;
+    border-top: 1px solid @themeBorderClr;
+    padding: 15px 30px;
+    height: 168px;
+    box-sizing: border-box;
     p {
       text-align: center;
+      color: @themeFontClr;
       font-weight: bold;
       font-size: 16px;
-      padding-bottom: 2px;
+      padding-bottom: 5px;
     }
   }
   .panPartPub {
     width: 33.33%;
-    height: 130px;
+    height: 110px;
     float: left;
     position: relative;
     p {
       text-align: center;
       font-size: 12px;
+      color: @themeFontClr;
       font-weight: normal;
-      width: 100px;
+      width: 78px;
       position: absolute;
       bottom: 0;
       left: 50%;
       margin-left: -50px;
     }
     .fen {
-      width: 100px;
-      height: 100px;
+      width: 78px;
+      height: 78px;
       position: absolute;
       left: 50%;
       margin-left: -50px;
@@ -378,30 +406,37 @@ body.console {
   .barChartLine {
     box-sizing: border-box;
     width: 100%;
-    height: 300px;
+    height: 257px;
   }
   .barChartLineBox {
-    border-bottom: 10px solid #f5f5f5;
+    border-bottom: 10px solid @activeBg;
     // width: 100%;
     padding-left: 15px;
+    background: @themeColor;
   }
 }
 
 .partTitlePub {
-  height: 44px;
-  line-height: 44px;
+  height: 40px;
+  line-height: 40px;
   padding: 0 15px;
   box-sizing: border-box;
-  border-bottom: 1px solid #E2E5EF;
+  background: @themeColor;
+  border-bottom: 1px solid @themeBorderClr;
   font-weight: bold;
+  color:@themeFontClr;
   font-size: 16px;
+  cursor: pointer;
+  span{
+    color: @themeFontClr;
+  }
   .name {
     float: left;
     font-size: 16px;
   }
   .personNum {
     float: right;
-    color: #51649C;
+    color: @themeFontClr;
   }
 }
 
@@ -411,9 +446,11 @@ body.console {
   height: 36px;
   line-height: 40px;
   font-weight: bold;
+  color: @themeFontClr;
 }
 .explainNum {
   margin-top: 8px;
+  color: @themeFontClr;
 }
 
 .toggleSlide {
@@ -431,6 +468,9 @@ body.console {
     position: relative;
     font-size: 14px;
     border-radius: 4px;
+    span{
+      color: @themeFontClr;
+    }
     img {
       width: 10px;
       position: absolute;

+ 377 - 0
src/css/dayDetail.less

@@ -0,0 +1,377 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+.dayDetail {
+    background-color: #fff;
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+    }
+    .filterItem.deptListWrap {
+        display: none;
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 495 - 0
src/css/deptConsole.less

@@ -0,0 +1,495 @@
+@import './reset.less';
+
+body.console {
+  overflow: auto;
+  background-color: #f5f5f5;
+}
+.echarts {
+  width: 100%;
+  height: 300px;
+  padding: 0 15px;
+}
+.barChartPay {
+  width: 100%;
+  height: 300px;
+}
+.emptyCircle {
+  width: 35%;
+  height: 200px;
+  float: left;
+  margin-top: 32px;
+}
+#emptyCircleB {
+  margin-top: 50px;
+}
+.partAll {
+  background-color: #fff;
+}
+.partWrap {
+  // overflow: auto;
+  height: auto;
+  background: #f5f5f5;
+  min-width: 1080px;
+  ul {
+    padding: 0 40px;
+  }
+  .partLi {
+    float: left;
+    margin: 15px 0;
+    width: 20%;
+    height: 100px;
+    overflow: hidden;
+    .partIn {
+      height: 100px;
+      box-sizing: border-box;
+      border-radius: 3px;
+      padding: 10px 15px;
+      border: 1px solid #E2E5EF;
+      margin: 0 6px;
+    }
+    p {
+      padding-bottom: 10px;
+      color: #51649C;
+    }
+    .top {
+      margin-bottom: 12px;
+    }
+    .btm {
+      padding-bottom: 4px;
+      img {
+        float: left;
+        width: 40px;
+      }
+      span {
+        float: right;
+        font-size: 28px;
+        color: #51649C;
+      }
+    }
+  }
+  
+  .title {
+    font-size: 16px;
+    font-weight: bold;
+    border-bottom: 1px solid #E2E5EF;
+    height: 36px;
+    line-height: 36px;
+    padding-left: 15px;
+  }
+}
+.swiperWrap {
+  width: 300px;
+  border: 1px solid #ccc;
+}
+.grayLine {
+  height: 10px;
+  background-color: #f5f5f5;
+}
+.partTitleT {
+  height: 44px;
+}
+.partTitle {
+  position: absolute;
+  top: 0px;
+  left: 0;
+  width: 100%;
+  min-width: 1080px;
+  box-sizing: border-box;
+  background-color: #fff;
+  z-index: 20;
+  height: 44px;
+  line-height: 44px;
+  padding-left: 15px;
+  font-size: 14px;
+  font-weight: bold;
+  letter-spacing: 1px;
+  p {
+    display: inline-block;
+    font-size: 16px;
+    span,i {
+      font-size: 16px;
+    }
+  }
+  .dateDetail {
+    font-size: 12px;
+    color: #777777;
+    margin-right: 30px;
+    font-weight: normal;
+  }
+  .monthYear {
+    float: right;
+    margin-right: 20px;
+    border: 1px solid @activeColor;
+    height: 28px;
+    line-height: 28px;
+    border-radius: 4px;
+    overflow: hidden;
+    cursor: pointer;
+    margin-top: 7px;
+    span {
+      width: 48px;
+      height: 28px;
+      line-height: 28px;
+      display: inline-block;
+      text-align: center;
+      font-weight: normal;
+    }
+    .year {
+      background-color: @activeColor;
+      color: #fff;
+    }
+    .mon {
+      color: @activeColor;
+    }
+  }
+}
+.partTitles {
+  height: 44px;
+  line-height: 44px;
+  padding-left: 10px;
+  margin-right: 0;
+}
+.pubEchart {
+  width: 100%;
+  display: inline-block;
+  margin-bottom: 10px;
+  background-color: #fff;
+  border-top: 10px solid #f5f5f5;
+}
+.pubEchartB {
+  width: 55%;
+  display: inline-block;
+  margin-bottom: 10px;
+  background-color: #fff;
+  border-top: 10px solid #f5f5f5;
+  border-left: 10px solid #f5f5f5;
+  box-sizing: border-box;
+}
+.paymoney {
+  box-sizing: border-box;
+  position: relative;
+}
+.dept {
+  box-sizing: border-box;
+}
+.circle {
+  height: 304px;
+  width: 100%;
+  display: inline-block;
+  background-color: #fff;
+  box-sizing: border-box;
+  position: relative;
+}
+.circleB {
+  height: 350px;
+  width: 100%;
+  display: inline-block;
+  background-color: #fff;
+  box-sizing: border-box;
+  border-top: 10px solid #f5f5f5;
+  position: relative;
+  .title {
+    cursor: pointer;
+  }
+}
+.btmWrap {
+  width: 100%;
+  overflow: hidden;
+}
+.explainPan {
+  width: 60%;
+  float: right;
+  position: absolute;
+  top: 50%;
+  right: 0;
+  padding-right: 30px;
+  box-sizing: border-box;
+  max-height: 250px;
+  overflow: auto;
+  table {
+    width: 100%;
+  }
+  .explainLi {
+    height: 30px;
+    line-height: 30px;
+    span {
+      display: inline-block;
+    }
+    .tip {
+      display: inline-block;
+      width: 10px;
+      height: 10px;
+      border-radius: 50%;
+      background-color: red;
+      margin-right: 10px;
+    }
+    .deptName {
+      color: #777;
+      p {
+        width: 110px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+      }
+      .smp {
+        width: 100px;
+      }
+    }
+    .deptNum {
+      color: #333;
+      font-size: 16px;
+      font-weight: bold;
+      padding-right: 10px;
+      width: 40px;
+      text-align: right;
+    }
+    .percent {
+      color: #777;
+      width: 40px;
+    }
+  }
+}
+.circleBSingle .explainPan .deptName p  {
+  width: 220px;
+}
+
+.part01 {
+  width: 38%;
+  background-color: #fff;
+  border-right: 10px solid #f5f5f5;
+  box-sizing: border-box;
+  ul {
+    padding: 40px 20px;
+    border-bottom: 10px solid #f5f5f5;
+    li {
+      width: 50%;
+      float: left;
+    }
+    .lis {
+      border-left: 3px solid #F2637B;
+      height: 72px;
+      box-sizing: border-box;
+      padding-left: 12px;
+      margin-left: 60px;
+      &.li02 {
+        border-left: 3px solid #37CBCB;
+      }
+      &.li03 {
+        border-left: 3px solid #FAD336;
+      }
+    }
+  }
+  
+  .defect {
+    background-color: #fff;
+    height: 452px;
+    overflow: hidden;
+    .list {
+      padding: 15px 5px;
+      width: 100%;
+      box-sizing: border-box;
+      overflow: auto;
+      height: 405px;
+    }
+    .thead {
+      td {
+        color: #51649C;
+      }
+    }
+    .qtable {
+      width: 100%;
+      overflow: auto;
+    }
+    td {
+      padding: 7px 10px;
+      i {
+        width: 17px;
+        height: 17px;
+        line-height: 17px;
+        border-radius: 8px;
+        background-color: #999;
+        color: #fff;
+        display: inline-block;
+        text-align: center;
+        font-size: 12px;
+      }
+    }
+    tr {
+      border-bottom: 1px solid #f5f5f5;
+      box-sizing: border-box;
+    }
+    .td01 {
+      width: 30px;
+    }
+    .td02 {
+      
+    }
+    .td03 {
+      width: 40px;
+    }
+    .td04 {
+      width: 40px;
+    }
+  }
+}
+.part02{
+  // border-right: 10px solid #f5f5f5;
+  box-sizing: border-box;
+  width: 62%;
+  background-color: #fff;
+  .bingli {
+    padding: 20px;
+    li {
+      float: left;
+      width: 23%;
+      text-align: center;
+      border-right: 1px solid #E2E5EF;
+    }
+    .fst {
+      // border-right: 1px solid #E2E5EF;
+      box-sizing: border-box;
+      width: 30%;
+    }
+    .four {
+      border-right: 0 none;
+    }
+  }
+  .bingliLis {
+    border-top: 1px solid #E2E5EF;
+    padding: 20px 30px;
+    p {
+      text-align: center;
+      font-weight: bold;
+      font-size: 16px;
+      padding-bottom: 2px;
+      margin-bottom: 10px;
+    }
+  }
+  .panPartPub {
+    width: 33.33%;
+    height: 130px;
+    float: left;
+    position: relative;
+    p {
+      text-align: center;
+      font-size: 12px;
+      font-weight: normal;
+      width: 100px;
+      position: absolute;
+      bottom: 0;
+      left: 50%;
+      margin-left: -50px;
+    }
+    .fen {
+      width: 100px;
+      height: 100px;
+      position: absolute;
+      left: 50%;
+      margin-left: -50px;
+    }
+  }
+}
+
+.partTitlePub {
+  height: 44px;
+  line-height: 44px;
+  padding: 0 15px;
+  box-sizing: border-box;
+  border-bottom: 1px solid #E2E5EF;
+  font-weight: bold;
+  font-size: 16px;
+  cursor: pointer;
+  .name {
+    float: left;
+    font-size: 16px;
+  }
+  .personNum {
+    float: right;
+    color: #51649C;
+  }
+}
+
+.numShow {
+  font-size: 28px;
+  display: inline-block;
+  height: 36px;
+  line-height: 40px;
+  font-weight: bold;
+}
+.explainNum {
+  margin-top: 8px;
+}
+
+.toggleSlide {
+  cursor: pointer;
+  margin-right: 20px;
+  margin-top: 6px;
+  p {
+    width: 170px;
+    height: 30px;
+    line-height: 28px;
+    border: 1px solid #E2E5EF;
+    padding-right: 20px;
+    padding-left: 10px;
+    position: relative;
+    font-size: 14px;
+    border-radius: 4px;
+    font-weight: normal;
+    span {
+      width: 155px;
+      height: 30px;
+      line-height: 30px;
+      display: inline-block;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      font-size: 14px;
+    }
+    img {
+      width: 10px;
+      position: absolute;
+      right: 10px;
+      top: 12px;
+    }
+  }
+  ul {
+    display: none;
+    background-color: #fff;
+    font-weight: normal;
+    border: 1px solid #E2E5EF;
+    z-index: 100;
+    padding: 0;
+    position: relative;
+    top: -15px;
+    li {
+      height: 30px;
+      line-height: 30px;
+      padding: 0 10px;
+      width: 180px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      font-size: 14px;
+      &:hover {
+        background-color: #EEF4FF;
+      }
+    }
+  }
+}
+.circleBLis {
+  // display: none;
+  position: relative;
+  .homePage {
+    width: 45%;
+    border-right: 10px solid #f5f5f5;
+    box-sizing: border-box;
+  }
+  .homePageNo {
+    width: 55%;
+  }
+}
+.emptyLineCircle {
+  width: 100%;
+  height: 300px;
+  margin-top: 0;
+}

+ 376 - 0
src/css/deptScoreDetail.less

@@ -0,0 +1,376 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: #fff;
+}
+.deptScoreDetail {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 376 - 0
src/css/deptScoreDetailControl.less

@@ -0,0 +1,376 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+.deptScoreDetailControl {
+    background-color: #fff;
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

File diff suppressed because it is too large
+ 625 - 383
src/css/index.less


+ 27 - 28
src/css/itemManager.less

@@ -1,3 +1,4 @@
+@import "./reset.less";
 .managerContainer{
     width: 100%;
     height: 100%;
@@ -11,20 +12,10 @@
         list-style:none;
     }
     h2{
-        width: 100%;
-        box-sizing: border-box;
-        background-color: #fff;
-        z-index: 20;
-        height: 44px;
-        line-height: 44px;
-        padding: 0 0 0 15px;
-        border-bottom: 1px solid #E2E5EF;
-        font-size: 16px;
-        font-weight: bold;
-        letter-spacing: 1px;
+        .h2;
     }
     .main-body{
-        margin: 20px 40px;
+        margin: 10px 40px;
     }
     table{
         width: 100%;
@@ -35,9 +26,9 @@
            
         }
         th,td{
-            height: 40px;
+            height: 32px;
             box-sizing: border-box;
-            padding: 10px;
+            padding:0 10px;
             border:1px solid #E2E5EF;
             border-collapse: collapse;
         }
@@ -60,15 +51,14 @@
     .filterItem{
         position: relative;
         display: inline-block;
-        margin-right: 20px;
-        height: 40px;
-        line-height: 40px;
+        height: 32px;
+        line-height: 32px;
         margin: 0 20px 20px 0;
     }
     .filterDropList{
         position: absolute;
         right: 0;
-        height: 200px;
+        max-height: 200px;
         overflow-y: auto;
         background: #fff;
         display: none;
@@ -101,24 +91,30 @@
         display: inline-block;
         position: relative;
         width:140px;
-        padding: 0 10px;
-        height:40px;
+        height:32px;
         border-radius:4px;
         border: 1px solid #E2E5EF;
         box-sizing: border-box;
         cursor: pointer;
-        padding-right: 26px;
+        padding:0 26px 0 10px;
     }
     .arrow{
         position: absolute;
         width: 10px;
-        top: 16px;
+        top: 12px;
         right: 10px;
     }
     .moduleItemInp{
         cursor: default;
         outline: none;
     }
+    .moduleItemInp:focus{
+        border: 1px solid @activeColor ;
+        outline: 0;
+        -webkit-box-shadow:@activeColor  0px 0px 2px;
+        -moz-box-shadow: @activeColor  0px 0px 2px;
+        box-shadow: @activeColor  0px 0px 2px;
+      }
     .moduleTypeList{
          width: 160px;
     }
@@ -135,18 +131,21 @@
     .filter{
         display: inline-block;
         width:60px;
-        height:36px;
-        background:#5A8EEE;
+        height:32px;
+        background:@activeColor;
         border-radius:4px;
         color: #fff;
         text-align: center;
-        line-height: 36px;
+        line-height: 32px;
         position: relative;
-        top: -1px;
+        top: 0px;
         cursor: pointer;
     }
+    .filterclear{
+        top:0px;
+    }
     .editItem{
-       color: #5A8EEE;
+       color: @activeColor;
        cursor: pointer;
     }
     .editItemDis{
@@ -195,7 +194,7 @@
         width: 6px;
     }
     .activePage{
-        color: #5A8EEE;
+        color: @activeColor;
     }
     
     input::-webkit-outer-spin-button,

+ 379 - 0
src/css/jiaji.less

@@ -0,0 +1,379 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+.jiaji {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+        .deptListWrap {
+            display: none;
+        }
+    }
+    .filterItem.deptListWrap {
+        display: none;
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 47 - 55
src/css/login.less

@@ -1,87 +1,69 @@
+@import './reset.less';
 body {
-  background-color: #f5f5f5;
+  background:linear-gradient(133deg,rgba(45,79,139,1) 0%,rgba(20,39,83,1) 100%);
 }
 .login {
   cursor: pointer;
+  height: 100%;
+  .bg{
+    width: 62%;
+    height: 100%;
+    text-align: center;
+    background: url("../images/loginBg2.png") center center no-repeat;
+    background-size: 84%;
+  }
   .waring {
     color: #FF4D4F;
     margin-top: 18px;
     height: 18px;
   }
-  .logoTop {
-    height:50px;
-    line-height:50px;
-    padding-left: 20px;
-    background:linear-gradient(123deg,rgba(90,142,238,1) 0%,rgba(126,171,255,1) 100%);
-    img {
-      vertical-align: middle;
-    }
-    span {
-      width: 1px;
-      height: 15px;
-      display: inline-block;
-      background-color: #fff;
-      position: relative;
-      top: 3px;
-      left: -1px;
-      margin: 0 3px;
-    }
-    i {
-      color: #fff;
-      position: relative;
-      top: 1px;
-    }
-  }
   .sureLogin {
-    width: 120px;
+    width: 300px;
     height: 40px;
     line-height: 40px;
     text-align: center;
-    background-color: #5A8EEE;
+    background-color: #00A1FF;
     color: #fff;
     border-radius:4px;
     margin: 20px auto 0;
   }
 }
-.loginForm {
-  width: 800px;
-  height: 520px;
+p.title {
+  font-size: 28px;
+  color: #fff;
+  font-weight: bold;
   position: absolute;
-  left: 50%;
-  top: 50%;
-  margin-left: -400px;
-  margin-top: -260px;
-  border-radius:20px;
-  background-color: #fff;
-  
-  p.title {
-    font-size: 28px;
-    color: #fff;
-    font-weight: bold;
-    position: absolute;
-    top: 90px;
-    left: 50px;
-  }
-  .loginBg {
-    float: left;
-    width: 400px;
-  }
+  top: 90px;
+  left: 50px;
+}
   .message {
-    float: left;
-    width: 50%;
-    padding:96px 50px;
+    width: 38%;
+    height: 100%;
+    background:linear-gradient(180deg,rgba(0,25,82,1) 0%,rgba(0,24,78,0.94) 100%);
     box-sizing: border-box;
+    position: relative;
+    .inner{
+      height: 360px;
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      margin-top: -180px;
+      margin-left: -150px;
+    }
     .welcome {
       font-size: 20px;
       font-weight: bold;
-      color: #333;
+      color: #fff;
       margin-bottom: 50px;
     }
   }
   .perPub {
+    width: 300px;
+    margin: auto;
     p {
       font-size: 12px;
       padding-bottom: 8px;
+      color: #fff;
     }
     img {
       vertical-align: middle;
@@ -91,7 +73,7 @@ body {
   .iptWrap {
     padding-left: 10px;
     box-sizing: border-box;
-    border: 1px solid #E2E5EF;
+    border: 1px solid #97A4BA;
     width: 300px;
     height: 40px;
     line-height: 38px;
@@ -99,9 +81,18 @@ body {
     input {
       display: inline-block;
       width: 80%;
+      color: #fff;
+      background: none;
     }
+    
+  }
+  .inputFocus{
+      border: 1px solid @activeColor ;
+      outline: 0;
+      -webkit-box-shadow:@activeColor  0px 0px 2px;
+      -moz-box-shadow: @activeColor  0px 0px 2px;
+      box-shadow: @activeColor  0px 0px 2px;
   }
-}
 
 .alertModal {
   .modalBg {
@@ -184,6 +175,7 @@ body {
   border-radius: 3px;
   color: #fff;
   background: rgba(0, 0, 0, .6);
+  z-index: 9999;
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000,endColorstr=#88000000);
 }
 .loading {

+ 30 - 17
src/css/moduleManager.less

@@ -1,25 +1,17 @@
+@import "./reset.less";
 .container{
     width: 100%;
 }
 h2{
-    width: 100%;
-    box-sizing: border-box;
-    background-color: #fff;
-    z-index: 20;
-    height: 44px;
-    line-height: 44px;
-    padding: 0 0 0 15px;
-    border-bottom: 1px solid #E2E5EF;
-    font-size: 16px;
-    font-weight: bold;
-    letter-spacing: 1px;
+    .h2;
 }
 .main-body{
-    margin: 20px 40px;
+    margin: 10px 40px;
 }
 .totalSumBox{
-    margin: 0 0 20px 0;
+    margin: 0 0 10px 0;
     text-align: right;
+    padding: 0 20px 0 0;
     .totalSum{
         color: red;
     }
@@ -28,13 +20,13 @@ table{
     width: 100%;
     border:1px solid #E2E5EF;
     border-collapse: collapse;/*关键代码*/
-  
+    min-width: 800px;
     thead{
         background: #EFF0F9;
        
     }
     th,td{
-        height: 40px;
+        height: 32px;
         box-sizing: border-box;
         padding: 0 20px;
         border:1px solid #E2E5EF;
@@ -50,9 +42,27 @@ table{
     }
     .moduleNumber{
         text-align: center;
+        width: 15%;
+        min-width: 30px;
+    }
+    .moduleName{
+        width: 55%;
+    }
+    .moduleScore{
+        text-align: center;
+        width: 15%;
+        min-width: 30px;
+    }
+    .moduleOpera{
+        text-align: center;
+        width: 15%;
+        min-width: 30px;
     }
     
 }
+.tableTitle table{
+    background: #EFF0F9;
+}
 .moduleScore, .totalSum{
     text-align: center;
     input{
@@ -66,13 +76,16 @@ table{
 .saveModule{
     display: inline-block;
     float: right;
-    background: #5A8EEE;
+    background: @activeColor;
     color:#fff;
     padding: 9px 16px;
     border-radius: 5px;
     cursor: pointer;
 }
 .tableWrapper{
+   
+}
+.tableInfo{
     overflow-y: auto;
 }
 .mask {
@@ -88,7 +101,7 @@ table{
     text-align: center;
 }
 .moduleOperaItem{
-    color: #5A8EEE;
+    color: @activeColor;
     cursor: pointer;
 }
 .moduleOperaItemDis{

+ 293 - 0
src/css/mukuai.less

@@ -0,0 +1,293 @@
+@import './reset.less';
+
+.mukuai{
+    width: 100%;
+    height: 100%;
+    overflow-y: auto;
+    background-color: #fff;
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:160px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    .selectUsed,.selectReject {
+        float: right;
+    }
+    ul,li{
+        padding:0;
+        margin:0;
+        list-style:none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold;
+        letter-spacing: 1px;
+    }
+    .main-body {
+        margin: 20px 40px;
+    }
+    table{
+        width: 100%;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400 
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        
+    }
+    // .filterBox{
+    //     margin: 0 0 20px 0;
+    // }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        margin-right: 20px;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 0;
+    }
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .rejectList, .usedList{
+        height: 120px;
+        li{
+            padding: 0 10px;
+        }
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .switchImg{
+        width: 30px;
+    }
+    .roleSelect {
+        position: relative;
+        top: 3px;
+        cursor: pointer;
+    }
+    .selectModuleType,.moduleItemInp,.selectUsed, .selectReject{
+        display: inline-block;
+        position: relative;
+        width:140px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+        padding-right: 26px;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .moduleItemInp{
+        cursor: default;
+        outline: none;
+    }
+    .moduleTypeList{
+         width: 160px;
+    }
+    .selectUsed, .selectReject{
+        width: 140px;
+    }
+    .modeTypeItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .rejectList, .usedList {
+        width: 140px;
+    }
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: -1px;
+        cursor: pointer;
+    }
+    .editItem{
+       color: @activeColor;
+       cursor: pointer;
+    }
+    .editItemDis{
+        color: #aaa;
+        cursor: not-allowed;
+    }
+    
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+
+.usrContain .selectReject,.usrContain .selectModuleType ,.managerContainer .selectModuleType  {
+    float: right;
+}
+.usrContain .rejectList,.usrContain .usedList{
+    height: 200px;
+}
+.usrContain .selectModuleType, .usrContain .moduleItemInp, .usrContain .selectUsed, .usrContain .selectReject {
+    width: 170px;
+}
+.managerContainer .moduleTypeList {
+    width: 140px;
+}
+.managerContainer.usrContain .moduleTypeList {
+    width: 170px;
+    height: 400px;
+}
+.managerContainer.usrContain .selectReject {
+    width: 140px;
+}

+ 379 - 0
src/css/partDetail.less

@@ -0,0 +1,379 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: #fff;
+}
+.partDetail {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+        .deptListWrap {
+            display: none;
+        }
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 379 - 0
src/css/partDetailControl.less

@@ -0,0 +1,379 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: #fff;
+}
+.partDetailControl {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+        .deptListWrap {
+            display: none;
+        }
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 380 - 0
src/css/payDetail.less

@@ -0,0 +1,380 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: #fff;
+}
+.payDetail {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+        .deptListWrap {
+            display: none;
+        }
+    }
+    .filterItem.deptListWrap {
+        display: none;
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 38 - 35
src/css/qcList.less

@@ -1,3 +1,4 @@
+@import "./reset.less";
 .container{
     width: 100%;
     height: 100%;
@@ -7,20 +8,10 @@ ul,li{
     list-style: none;
 }
 h2{
-    width: 100%;
-    box-sizing: border-box;
-    background-color: #fff;
-    z-index: 20;
-    height: 44px;
-    line-height: 44px;
-    padding: 0 0 0 15px;
-    border-bottom: 1px solid #E2E5EF;
-    font-size: 16px;
-    font-weight: bold   ;
-    letter-spacing: 1px;
+    .h2
 }
 .main-body{
-    margin: 20px 0;
+    margin: 10px 0;
     padding: 0 35px;
     min-width: 1090px;
     /*width: 100%;*/
@@ -30,14 +21,13 @@ table{
     min-width: 1090px;
     border:1px solid #E2E5EF;
     border-collapse: collapse;
-    thead{
+    thead th{
         background: #EFF0F9;
        
     }
     th,td{
-        height: 40px;
         box-sizing: border-box;
-        padding: 10px;
+        padding:6px 10px;
         border:1px solid #E2E5EF;
         border-collapse: collapse;
     }
@@ -96,7 +86,7 @@ table{
 
 .recordScoreOperaBtn{
     cursor: pointer;
-    color: #5A8EEE;
+    color: @activeColor;
 }
 .recordScoreBtn{
     cursor: pointer;
@@ -107,27 +97,27 @@ table{
     text-align: center;
     border-radius:4px;
     box-sizing: border-box;
-    border: 1px solid #5A8EEE;
-    color: #5A8EEE;
+    border: 1px solid @activeColor;
+    color: @activeColor;
 }
-.filterBox{
+/*.filterBox{
     margin-bottom: 15px;
-}
+}*/
 .filterItem{
     position: relative;
     display: inline-block;
     float: left;
     height: 40px;
     line-height: 40px;
-    margin: 0 20px 15px 0;
+    margin: 0 20px 5px 0;
     span{
         display: inline-block;
-        line-height: 40px;
+        line-height: 32px;
         position: relative;
     }
     input{
         width:120px;
-        height:40px;
+        height:32px;
         border-radius:4px;
         border: 1px solid #E2E5EF;
         outline: none;
@@ -135,6 +125,13 @@ table{
         padding: 0 10px;
         box-sizing: border-box;
     }
+    input:focus{
+        border: 1px solid @activeColor ;
+        outline: 0;
+        -webkit-box-shadow:@activeColor  0px 0px 2px;
+        -moz-box-shadow: @activeColor  0px 0px 2px;
+        box-shadow: @activeColor  0px 0px 2px;
+    }
 }
 
 .filterDropList{
@@ -168,7 +165,7 @@ table{
     position: relative;
     width:120px;
     padding: 0 10px;
-    height:40px;
+    height:32px;
     border-radius:4px;
     border: 1px solid #E2E5EF;
     box-sizing: border-box;
@@ -178,24 +175,25 @@ table{
     width: 160px;
 }
 
-.filter{
+.filter,.reset{
     display: inline-block;
     width:60px;
-    height:36px;
-    background:#5A8EEE;
+    height:32px;
+    background:@activeColor;
     border-radius:4px;
     color: #fff;
     text-align: center;
-    line-height: 36px;
+    line-height: 32px;
     position: relative;
     top: 2px;
     cursor: pointer;
     float: left;
+    margin: 0 20px 22px 0;
 }
 .arrow{
     position: absolute;
     width: 10px;
-    top: 16px;
+    top: 12px;
     right: 10px;
 }
 .iconCheck{
@@ -222,7 +220,7 @@ table{
     position: relative;
     display: inline-block;
     width: 120px;
-    height: 40px;
+    height: 32px;
     input{
         position: absolute;
     }
@@ -230,14 +228,14 @@ table{
 .iconCalen{
     position: absolute;
     width: 15px;
-    top: 12px;
+    top: 8px;
     right: 10px;
 }
 .textCenter{
     text-align: center;
 }
 .patientNameSpan{
-    color: #5A8EEE;
+    color: @activeColor;
     cursor: pointer;
 }
 
@@ -250,6 +248,9 @@ table{
     text-overflow:ellipsis;
     white-space: nowrap;
 }
+.unSelect{
+    color: #cfccd6
+ }
 
 
 .pagination{
@@ -283,11 +284,13 @@ table{
     width: 6px;
 }
 .activePage{
-    color: #5A8EEE;
+    color: @activeColor;
 }
 
 
 
+
+
 .ui-datepicker-calendar {
     border: 0 none;
     min-width: 0;
@@ -327,7 +330,7 @@ table{
     top: 5px;
 }
 .ui-state-active, .ui-widget-content .ui-state-active {
-    background-color: #5a8eee !important;
+    background-color: @activeColor !important;
     color: #fff;
 }
 .ui-state-highlight, .ui-widget-content .ui-state-highlight {
@@ -343,7 +346,7 @@ input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
     -webkit-appearance: none;
 }
- 
+
 input[type="number"] {
     -moz-appearance: textfield;
 }

+ 35 - 34
src/css/qcListDept.less

@@ -1,3 +1,4 @@
+@import "./reset.less";
 .container{
     width: 100%;
     height: 100%;
@@ -7,20 +8,10 @@ ul,li{
     list-style: none;
 }
 h2{
-    width: 100%;
-    box-sizing: border-box;
-    background-color: #fff;
-    z-index: 20;
-    height: 44px;
-    line-height: 44px;
-    padding: 0 0 0 15px;
-    border-bottom: 1px solid #E2E5EF;
-    font-size: 16px;
-    font-weight: bold   ;
-    letter-spacing: 1px;
+    .h2;
 }
 .main-body{
-    margin: 20px 0;
+    margin: 10px 0;
     padding: 0 35px;
     min-width: 1090px;
     /*width: 100%;*/
@@ -30,14 +21,13 @@ table{
     min-width: 1090px;
     border:1px solid #E2E5EF;
     border-collapse: collapse;
-    thead{
+    thead th{
         background: #EFF0F9;
        
     }
     th,td{
-        height: 40px;
         box-sizing: border-box;
-        padding: 10px;
+        padding:6px 10px;
         border:1px solid #E2E5EF;
         border-collapse: collapse;
     }
@@ -96,7 +86,7 @@ table{
 
 .recordScoreOperaBtn{
     cursor: pointer;
-    color: #5A8EEE;
+    color: @activeColor;
 }
 .recordScoreBtn{
     cursor: pointer;
@@ -107,27 +97,27 @@ table{
     text-align: center;
     border-radius:4px;
     box-sizing: border-box;
-    border: 1px solid #5A8EEE;
-    color: #5A8EEE;
+    border: 1px solid @activeColor;
+    color: @activeColor;
 }
-.filterBox{
+/*.filterBox{
     margin-bottom: 15px;
-}
+}*/
 .filterItem{
     position: relative;
     display: inline-block;
     float: left;
     height: 40px;
     line-height: 40px;
-    margin: 0 20px 15px 0;
+    margin: 0 20px 5px 0;
     span{
         display: inline-block;
-        line-height: 40px;
+        line-height: 32px;
         position: relative;
     }
     input{
         width:120px;
-        height:40px;
+        height:32px;
         border-radius:4px;
         border: 1px solid #E2E5EF;
         outline: none;
@@ -135,6 +125,13 @@ table{
         padding: 0 10px;
         box-sizing: border-box;
     }
+    input:focus{
+        border: 1px solid @activeColor ;
+        outline: 0;
+        -webkit-box-shadow:@activeColor  0px 0px 2px;
+        -moz-box-shadow: @activeColor  0px 0px 2px;
+        box-shadow: @activeColor  0px 0px 2px;
+    }
 }
 
 .filterDropList{
@@ -169,7 +166,7 @@ table{
     position: relative;
     width:120px;
     padding: 0 10px;
-    height:40px;
+    height:32px;
     border-radius:4px;
     border: 1px solid #E2E5EF;
     box-sizing: border-box;
@@ -179,24 +176,25 @@ table{
     width: 160px;
 }
 
-.filter{
+.filter,.reset{
     display: inline-block;
     width:60px;
-    height:36px;
-    background:#5A8EEE;
+    height:32px;
+    background:@activeColor;
     border-radius:4px;
     color: #fff;
     text-align: center;
-    line-height: 36px;
+    line-height: 32px;
     position: relative;
     top: 2px;
     cursor: pointer;
     float: left;
+    margin: 0 20px 22px 0;
 }
 .arrow{
     position: absolute;
     width: 10px;
-    top: 16px;
+    top: 12px;
     right: 10px;
 }
 .iconCheck{
@@ -223,7 +221,7 @@ table{
     position: relative;
     display: inline-block;
     width: 120px;
-    height: 40px;
+    height: 32px;
     input{
         position: absolute;
     }
@@ -231,14 +229,14 @@ table{
 .iconCalen{
     position: absolute;
     width: 15px;
-    top: 12px;
+    top: 8px;
     right: 10px;
 }
 .textCenter{
     text-align: center;
 }
 .patientNameSpan{
-    color: #5A8EEE;
+    color: @activeColor;
     cursor: pointer;
 }
 
@@ -251,6 +249,9 @@ table{
     text-overflow:ellipsis;
     white-space: nowrap;
 }
+.unSelect{
+    color: #cfccd6
+ }
 
 
 .pagination{
@@ -284,7 +285,7 @@ table{
     width: 6px;
 }
 .activePage{
-    color: #5A8EEE;
+    color: @activeColor;
 }
 
 
@@ -328,7 +329,7 @@ table{
     top: 5px;
 }
 .ui-state-active, .ui-widget-content .ui-state-active {
-    background-color: #5a8eee !important;
+    background-color: @activeColor !important;
     color: #fff;
 }
 .ui-state-highlight, .ui-widget-content .ui-state-highlight {

+ 34 - 33
src/css/qcListPerson.less

@@ -1,3 +1,4 @@
+@import "./reset.less";
 .container{
     width: 100%;
     height: 100%;
@@ -7,20 +8,10 @@ ul,li{
     list-style: none;
 }
 h2{
-    width: 100%;
-    box-sizing: border-box;
-    background-color: #fff;
-    z-index: 20;
-    height: 44px;
-    line-height: 44px;
-    padding: 0 0 0 15px;
-    border-bottom: 1px solid #E2E5EF;
-    font-size: 16px;
-    font-weight: bold   ;
-    letter-spacing: 1px;
+    .h2;
 }
 .main-body{
-    margin: 20px 0;
+    margin: 10px 0;
     padding: 0 35px;
     min-width: 1090px;
     /*width: 100%;*/
@@ -30,14 +21,13 @@ table{
     min-width: 1090px;
     border:1px solid #E2E5EF;
     border-collapse: collapse;
-    thead{
+    thead th{
         background: #EFF0F9;
        
     }
     th,td{
-        height: 40px;
         box-sizing: border-box;
-        padding: 10px;
+        padding:6px 10px;
         border:1px solid #E2E5EF;
         border-collapse: collapse;
     }
@@ -96,7 +86,7 @@ table{
 
 .recordScoreOperaBtn{
     cursor: pointer;
-    color: #5A8EEE;
+    color: @activeColor;
 }
 .recordScoreBtn{
     cursor: pointer;
@@ -107,27 +97,27 @@ table{
     text-align: center;
     border-radius:4px;
     box-sizing: border-box;
-    border: 1px solid #5A8EEE;
-    color: #5A8EEE;
+    border: 1px solid @activeColor;
+    color: @activeColor;
 }
-.filterBox{
+/*.filterBox{
     margin-bottom: 15px;
-}
+}*/
 .filterItem{
     position: relative;
     display: inline-block;
     float: left;
     height: 40px;
     line-height: 40px;
-    margin: 0 20px 15px 0;
+    margin: 0 20px 5px 0;
     span{
         display: inline-block;
-        line-height: 40px;
+        line-height: 32px;
         position: relative;
     }
     input{
         width:120px;
-        height:40px;
+        height:32px;
         border-radius:4px;
         border: 1px solid #E2E5EF;
         outline: none;
@@ -135,6 +125,13 @@ table{
         padding: 0 10px;
         box-sizing: border-box;
     }
+    input:focus{
+        border: 1px solid @activeColor ;
+        outline: 0;
+        -webkit-box-shadow:@activeColor  0px 0px 2px;
+        -moz-box-shadow: @activeColor  0px 0px 2px;
+        box-shadow: @activeColor  0px 0px 2px;
+    }
 }
 
 .filterDropList{
@@ -168,7 +165,7 @@ table{
     position: relative;
     width:120px;
     padding: 0 10px;
-    height:40px;
+    height:32px;
     border-radius:4px;
     border: 1px solid #E2E5EF;
     box-sizing: border-box;
@@ -191,24 +188,25 @@ table{
     cursor: default;
 }
 
-.filter{
+.filter,.reset{
     display: inline-block;
     width:60px;
-    height:36px;
-    background:#5A8EEE;
+    height:32px;
+    background:@activeColor;
     border-radius:4px;
     color: #fff;
     text-align: center;
-    line-height: 36px;
+    line-height: 32px;
     position: relative;
     top: 2px;
     cursor: pointer;
     float: left;
+    margin: 0 20px 22px 0;
 }
 .arrow{
     position: absolute;
     width: 10px;
-    top: 16px;
+    top: 12px;
     right: 10px;
 }
 .iconCheck{
@@ -243,14 +241,14 @@ table{
 .iconCalen{
     position: absolute;
     width: 15px;
-    top: 12px;
+    top: 8px;
     right: 10px;
 }
 .textCenter{
     text-align: center;
 }
 .patientNameSpan{
-    color: #5A8EEE;
+    color: @activeColor;
     cursor: pointer;
 }
 
@@ -263,6 +261,9 @@ table{
     text-overflow:ellipsis;
     white-space: nowrap;
 }
+.unSelect{
+    color: #cfccd6
+ }
 
 
 .pagination{
@@ -296,7 +297,7 @@ table{
     width: 6px;
 }
 .activePage{
-    color: #5A8EEE;
+    color: @activeColor;
 }
 
 
@@ -340,7 +341,7 @@ table{
     top: 5px;
 }
 .ui-state-active, .ui-widget-content .ui-state-active {
-    background-color: #5a8eee !important;
+    background-color: @activeColor !important;
     color: #fff;
 }
 .ui-state-highlight, .ui-widget-content .ui-state-highlight {

+ 69 - 28
src/css/qcScore.less

@@ -1,11 +1,10 @@
 @import './reset.less';
 .main-part{
   height: 100%;
-  margin-top: 20px;
 }
 #loading{
   text-align: center;
-  margin-top: 30px;
+  /*margin-top: 30px;*/
 }
 .waring {
   color: #FF4D4F;
@@ -13,44 +12,55 @@
   height: 18px;
 }
 .patient-info{
-  // height: 50px;
+  /*height: 50px;*/
   line-height: 50px;
-  margin-top: 10px;
+  border-bottom: 1px #E2E5EF solid;
+  text-align: center;
+  margin-bottom: 20px;
   span{
+    color: #333;
     margin-right: 40px;
     display: inline-block;
   }
 }
-#patientInfo{
-  height: 44px;
-  line-height: 44px;
-  text-align: center;
-  background:linear-gradient(123deg,#5A8EEE 0%,#7EABFF 100%);
-  span{
-    color: #fff;
-  }
-}
 .sub-menu{
   position: relative;
   width: @menuWt;
   height: 100%;
   float: left;
   overflow-y: auto;
+  overflow-x: hidden;
+  background: @themeColor;
   border-right: 1px @frameBdColor solid;
+  .logo{
+    margin:5px 0 44px;
+    text-indent: 22px;
+  }
+  &>a{
+    position: absolute;
+    top: 50%;
+    right: 0;
+    z-index: 1;
+  }
+  &>ul>li{
+    color: @themeFontClr;
+  }
   .active{
     color: @activeColor;
-    background: @activeBg;
-    border-right: 3px @activeColor solid;
+    /*background: @activeBg;
+    border-right: 3px @activeColor solid;*/
   }
   .page:hover{
       color: @activeColor;
   }
   .list-1{
     position: relative;
-    p:hover{
-         color: @activeColor;
-       }
-   
+    p {
+      color: @themeFontClr;
+      &:hover {
+        color: @activeColor;
+      }
+    }
     &:after{
       content: " ";
       display: inline-block;
@@ -69,6 +79,10 @@
       display: none;
       li.page{
         text-indent: 30px;
+        color: @themeFontClr;
+        &.active{
+          color: @activeColor;
+        }
       }
     }
   }
@@ -80,16 +94,43 @@
   .copy-right{
     position: fixed;
     bottom: 0px;
-    width: @menuWt+(-18px);
+    width: @menuWt;
     text-align: center;
     font-size:12px;
-    color: #aaa;
-    background: #fff;
+    color: #F0F0F0;
+    background: @themeColor;
     padding: 10px 0 20px;
+    border-top: 1px @themeBorderClr solid;
+  }
+}
+.menu-mini{
+  display: none;
+  width: 60px;
+  &>ul>li{
+    width: 100%;
+    height: 40px;
+    line-height: 40px;
+    background: url("../images/icon3.png") center no-repeat;
+    & ul{
+      display: none;
+      left: 60px;
+      position: absolute;
+      width: 140px;
+    }
+    &.YH-KZT{
+      background: url("../images/icon3.png") center no-repeat;
+    }
+    &.YH-QBYH-JCGN{
+      background: url("../images/icon2.png") center no-repeat;
+    }
+    &.active{
+      background-color: #EEF4FF;
+      border-left: 3px @activeColor solid;
+    }
   }
 }
 .tab-container{
-  margin-left: @menuWt+10px;
+  margin-left: @menuWt;
   height: 100%;
   .content-box{
     width:78%;
@@ -199,7 +240,7 @@
       .cont{
         display: inline-block;
         min-width: 33%;
-        margin-bottom: 15px;
+        margin-bottom: 5px;
         box-sizing: border-box;
         padding-left: 5px;
         &.active{
@@ -295,7 +336,7 @@
         text-indent: 5px;
       }
       .title{
-        margin-bottom: 10px;
+        margin-bottom: 5px;
         box-sizing: border-box;
         padding-left: 5px;
         &.active{
@@ -410,13 +451,13 @@
   margin-right: 30px;
   .slide-up{
     cursor: pointer;
-    color: #5A8EEE;
+    color: @activeColor;
     &:before{
       display: inline-block;
       width: 14px;
       content: "-";
       font-size: 18px;
-      color: #5A8EEE;
+      color: @activeColor;
       text-align: center;
     }
     &.down:before{
@@ -436,7 +477,7 @@
       display: none;
     }*/
     th,td{
-      height: 40px;
+      height: 32px;
       box-sizing: border-box;
       padding: 0 20px;
       border:1px solid #E2E5EF;

+ 295 - 0
src/css/quexianDetail.less

@@ -0,0 +1,295 @@
+@import './reset.less';
+
+.quexianDetail{
+    width: 100%;
+    height: 100%;
+    overflow-y: auto;
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:160px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    .rejectList {
+        height: 80px !important;
+    }
+    .selectUsed,.selectReject {
+        float: right;
+    }
+    ul,li{
+        padding:0;
+        margin:0;
+        list-style:none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 40px;
+    }
+    table{
+        width: 100%;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400 
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        
+    }
+    // .filterBox{
+    //     margin: 0 0 20px 0;
+    // }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        margin-right: 20px;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 0;
+    }
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .rejectList, .usedList{
+        height: 120px;
+        li{
+            padding: 0 10px;
+        }
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .switchImg{
+        width: 30px;
+    }
+    .roleSelect {
+        position: relative;
+        top: 3px;
+        cursor: pointer;
+    }
+    .selectModuleType,.moduleItemInp,.selectUsed, .selectReject{
+        display: inline-block;
+        position: relative;
+        width:140px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+        padding-right: 26px;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .moduleItemInp{
+        cursor: default;
+        outline: none;
+    }
+    .moduleTypeList{
+         width: 160px;
+    }
+    .selectUsed, .selectReject{
+        width: 140px;
+    }
+    .modeTypeItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .rejectList, .usedList {
+        width: 140px;
+    }
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: -1px;
+        cursor: pointer;
+    }
+    .editItem{
+       color: @activeColor;
+       cursor: pointer;
+    }
+    .editItemDis{
+        color: #aaa;
+        cursor: not-allowed;
+    }
+    
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+
+.usrContain .selectReject,.usrContain .selectModuleType ,.managerContainer .selectModuleType  {
+    float: right;
+}
+.usrContain .rejectList,.usrContain .usedList{
+    height: 200px;
+}
+.usrContain .selectModuleType, .usrContain .moduleItemInp, .usrContain .selectUsed, .usrContain .selectReject {
+    width: 170px;
+}
+.managerContainer .moduleTypeList {
+    width: 140px;
+}
+.managerContainer.usrContain .moduleTypeList {
+    width: 170px;
+    height: 400px;
+}
+.managerContainer.usrContain .selectReject {
+    width: 140px;
+}

+ 295 - 0
src/css/quexianDetailControl.less

@@ -0,0 +1,295 @@
+@import './reset.less';
+
+.quexianDetailControl{
+    width: 100%;
+    height: 100%;
+    overflow-y: auto;
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:160px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    .rejectList {
+        height: 80px !important;
+    }
+    .selectUsed,.selectReject {
+        float: right;
+    }
+    ul,li{
+        padding:0;
+        margin:0;
+        list-style:none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 40px;
+    }
+    table{
+        width: 100%;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400 
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        
+    }
+    // .filterBox{
+    //     margin: 0 0 20px 0;
+    // }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        margin-right: 20px;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 0;
+    }
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .rejectList, .usedList{
+        height: 120px;
+        li{
+            padding: 0 10px;
+        }
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .switchImg{
+        width: 30px;
+    }
+    .roleSelect {
+        position: relative;
+        top: 3px;
+        cursor: pointer;
+    }
+    .selectModuleType,.moduleItemInp,.selectUsed, .selectReject{
+        display: inline-block;
+        position: relative;
+        width:140px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+        padding-right: 26px;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .moduleItemInp{
+        cursor: default;
+        outline: none;
+    }
+    .moduleTypeList{
+         width: 160px;
+    }
+    .selectUsed, .selectReject{
+        width: 140px;
+    }
+    .modeTypeItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .rejectList, .usedList {
+        width: 140px;
+    }
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: -1px;
+        cursor: pointer;
+    }
+    .editItem{
+       color: @activeColor;
+       cursor: pointer;
+    }
+    .editItemDis{
+        color: #aaa;
+        cursor: not-allowed;
+    }
+    
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+
+.usrContain .selectReject,.usrContain .selectModuleType ,.managerContainer .selectModuleType  {
+    float: right;
+}
+.usrContain .rejectList,.usrContain .usedList{
+    height: 200px;
+}
+.usrContain .selectModuleType, .usrContain .moduleItemInp, .usrContain .selectUsed, .usrContain .selectReject {
+    width: 170px;
+}
+.managerContainer .moduleTypeList {
+    width: 140px;
+}
+.managerContainer.usrContain .moduleTypeList {
+    width: 170px;
+    height: 400px;
+}
+.managerContainer.usrContain .selectReject {
+    width: 140px;
+}

+ 380 - 0
src/css/quexianXQ.less

@@ -0,0 +1,380 @@
+@import './reset.less';
+
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+.quexianXQ {
+    background-color: #fff;
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+        .selectLevel,.levelList  {
+            width: 180px;
+        }
+        .deptListWrap {
+            display: none;
+        }
+    }
+    .filterItem.deptListWrap {
+        display: none;
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    ul,li{
+        list-style: none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold   ;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 0;
+        padding: 0 35px;
+        min-width: 1090px;
+        /*width: 100%;*/
+    }
+    table{
+        width: 100%;
+        min-width: 1090px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+            text-align: center;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+            white-space: nowrap;
+        }
+        th[code]{
+            cursor: pointer;
+            &:after{
+                content:"";
+                display:inline-block;
+                width: 11px;
+                height: 14px;
+                margin-left: 4px;
+                vertical-align: middle;
+                background: url("../images/grey.png");
+            }
+            &.asc:after{
+                background: url("../images/up_blue.png");
+            }
+            &.desc:after{
+                background: url("../images/down_blue.png");
+            }
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400;
+            white-space: nowrap;
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        .scoreOperaItem{
+            width: 50px;
+            cursor: pointer;
+        }
+        
+    }
+    .tabFoot{
+        height: 40px;
+        /*border: 1px solid #E2E5EF;
+        border-top: none;
+        box-sizing: border-box;*/
+    }
+    .scoreOpera{
+        height: 50px;
+        line-height: 50px;
+        margin: 0 20px 0 0;
+        cursor: pointer;
+        img{
+            margin: 0 10px 0 0;
+        }
+    }
+    
+    .recordScoreOperaBtn{
+        cursor: pointer;
+        color: @activeColor;
+    }
+    .recordScoreBtn{
+        cursor: pointer;
+        display: inline-block;
+        width:68px;
+        height:30px;
+        line-height: 30px;
+        text-align: center;
+        border-radius:4px;
+        box-sizing: border-box;
+        border: 1px solid @activeColor;
+        color: @activeColor;
+    }
+    .filterBox{
+        margin-bottom: 15px;
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }
+    .levelList{
+        width: 120px;
+        height: 120px;
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:120px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .selectDept{
+        width: 160px;
+    }
+    
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: 2px;
+        cursor: pointer;
+        float: left;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .iconCheck{
+        width: 14px;
+    }
+    .fl{
+        float: left;
+    }
+    .clearfix:after {
+        content: '';
+        height: 0;
+        line-height: 0;
+        display: block;
+        visibility: hidden;
+        clear: both;
+    }
+    .clearfix{
+        zoom:1
+    }
+    .divide{
+        margin: 0 10px;
+    }
+    .datapickerBox{
+        position: relative;
+        display: inline-block;
+        width: 120px;
+        height: 40px;
+        input{
+            position: absolute;
+        }
+    }
+    .iconCalen{
+        position: absolute;
+        width: 15px;
+        top: 12px;
+        right: 10px;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    .patientNameSpan{
+        color: #00A1F0;
+        cursor: pointer;
+    }
+    .patientNameSpans{
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    
+    
+    .ui-datepicker-calendar {
+        border: 0 none;
+        min-width: 0;
+    }
+    .ui-datepicker thead {
+        background-color: #fff;
+        color: #c3cbd6;
+    }
+    .ui-datepicker td {
+        padding: 0;
+        height: auto;
+        color: #657180;
+    }
+    .ui-datepicker td span, .ui-datepicker td a {
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+    }
+    
+    .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+        border: 0;
+        background-color: #fff;
+        &:hover {
+            background-color: #c4d8fe;
+        }
+    }
+    .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year {
+        color: #333;
+        font-weight: normal;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 5px;
+        width: 40%;
+        border-radius: 3px;
+    }
+    .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
+        top: 5px;
+    }
+    .ui-state-active, .ui-widget-content .ui-state-active {
+        background-color: @activeColor !important;
+        color: #fff;
+    }
+    .ui-state-highlight, .ui-widget-content .ui-state-highlight {
+        background-color: #fff5bf !important;
+        color: #657180;
+    }
+    .ui-widget-header {
+        background-color: #fff;
+        border: 0 none;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+.abnormalClear {
+    top: 2px !important;
+}

+ 138 - 3
src/css/reset.less

@@ -94,13 +94,30 @@ textarea {
 @headerHt:50px;   /*logo栏高度*/
 @menuLiHt:40px;   /*菜单项高度*/
 @menuWt:205px;   /*菜单宽度*/
-@activeColor:#5A8EEE;   /*菜单项选中颜色*/
-@activeBg:#EEF4FF;   /*菜单项选中背景*/
+@themeColor:#203463;    //主题背景色
+@themeFontClr:#fff;   //主题字体色
+@themeBorderClr:#4A5D8E;    //主题边框色
+@activeColor:#00A1FF;   /*菜单项选中颜色*/
+@activeBg:#142753;   /*菜单项选中背景*/
 @borderColor:#E2E5EF; /**边框颜色**/
 @frameBdColor:#F0F0F0;/***框架边框颜色**/
 @warnColor:#FF4D4F;  /**重点红色**/
 @thBgColor:#EFF0F9; /**标题背景色**/
 @tableBorderColor:#E2E5EF;  /**表格边框**/
+.h2{
+  width: 100%;
+  /*box-sizing: border-box;*/
+  z-index: 20;
+  color: #51649C;
+  height: 44px;
+  line-height: 44px;
+  /*padding: 0 0 0 15px;*/
+  border-bottom: 10px solid #F5F6FA;
+  font-size: 16px;
+  text-indent: 20px;
+  font-weight: bold;
+  letter-spacing: 1px;
+}
 
 
 /****弹窗样式*****/
@@ -233,7 +250,7 @@ textarea {
       text-decoration: none;
     }
     .sure {
-      background-color: #5A8EEE;
+      background-color: @activeColor;
       border-color: #1E9FFF;
       color: #fff;
     }
@@ -245,6 +262,7 @@ textarea {
 }
 .divModal {
   position: fixed;
+  z-index: 9999;
 }
 .modaltip {
   position: fixed;
@@ -288,3 +306,120 @@ input:-moz-placeholder{    /* Mozilla Firefox 4 to 18 */
 input:-ms-input-placeholder{  /* Internet Explorer 10-11 */
   color:#ccc;
 }
+
+
+
+.grayLine {
+  height: 10px;
+  background-color: #f5f5f5;
+}
+.partTitleT {
+  height: 44px;
+}
+.partTitle {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 100%;
+  box-sizing: border-box;
+  background-color: #fff;
+  z-index: 20;
+  height: 44px;
+  line-height: 44px;
+  padding-left: 15px;
+  font-size: 14px;
+  font-weight: bold;
+  letter-spacing: 1px;
+  min-width: 100px;
+  p {
+    display: inline-block;
+    font-size: 16px;
+    color: #51649C;
+    a {
+      font-size: 16px;
+      color: #51649C;
+      opacity: 70%;
+    }
+    span {
+      color: #51649C;
+      font-size: 16px;
+    }
+    i {
+      color: #51649C;
+    }
+  }
+  .dateDetail {
+    font-size: 12px;
+    color: #777777;
+    margin-right: 30px;
+    font-weight: normal;
+  }
+  .monthYear {
+    float: right;
+    margin-right: 20px;
+    border: 1px solid @activeColor;
+    height: 28px;
+    line-height: 28px;
+    border-radius: 4px;
+    overflow: hidden;
+    cursor: pointer;
+    margin-top: 7px;
+    span {
+      width: 48px;
+      height: 28px;
+      line-height: 28px;
+      display: inline-block;
+      text-align: center;
+      font-weight: normal;
+    }
+    .year {
+      background-color: @activeColor;
+      color: #fff;
+    }
+    .mon {
+      color: @activeColor;
+    }
+  }
+}
+
+.filterBox {
+  /*.filter {
+    display: inline-block;
+    width:60px;
+    height:36px;
+    background:@activeColor;
+    border-radius:4px;
+    color: #fff;
+    text-align: center;
+    line-height: 36px;
+    position: relative;
+    top: -1px;
+    cursor: pointer;
+  }*/
+  .filterclear{
+      display: inline-block;
+      width:60px;
+      height:30px;
+      background:#fff;
+      border-radius:4px;
+      color: #777;
+      border: 1px solid #777;
+      text-align: center;
+      line-height: 30px;
+      position: relative;
+      top: 2px;
+      cursor: pointer;
+      margin-left: 5px;
+  }
+}
+.filterclearT {
+  height: 30px !important;
+  line-height: 32px !important;
+  float: left;
+  position: relative;
+  top: 2px !important;
+}
+.goHomeDetail {
+  color: #00A1F0;
+  cursor: pointer;
+}

+ 5 - 3
src/css/roleManager.less

@@ -1,3 +1,5 @@
+@import './reset.less';
+
 .leftMenu {
     border: 1px solid #E2E5EF;
     padding: 20px;
@@ -22,8 +24,8 @@
     //     width: 52px;
     //     height: 30px;
     //     line-height: 30px;
-    //     color: #5A8EEE;
-    //     border: 1px solid #5A8EEE;
+    //     color: @activeColor;
+    //     border: 1px solid @activeColor;
     //     border-radius: 4px;
     //     text-align: center;
     //     position: relative;
@@ -59,7 +61,7 @@
         height: 36px;
         line-height: 36px;
         text-align: center;
-        background-color: #5A8EEE;
+        background-color: @activeColor;
         color: #fff;
         float: right;
         margin-top: 10px;

+ 295 - 0
src/css/tiaomu.less

@@ -0,0 +1,295 @@
+@import './reset.less';
+
+.tiaomu{
+    width: 100%;
+    height: 100%;
+    overflow-y: auto;
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:160px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+    }
+    .rejectList {
+        height: 80px !important;
+    }
+    .selectUsed,.selectReject {
+        float: right;
+    }
+    ul,li{
+        padding:0;
+        margin:0;
+        list-style:none;
+    }
+    h2{
+        width: 100%;
+        box-sizing: border-box;
+        background-color: #fff;
+        z-index: 20;
+        height: 44px;
+        line-height: 44px;
+        padding: 0 0 0 15px;
+        border-bottom: 1px solid #E2E5EF;
+        font-size: 16px;
+        font-weight: bold;
+        letter-spacing: 1px;
+    }
+    .main-body{
+        margin: 20px 40px;
+    }
+    table{
+        width: 100%;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+        thead{
+            background: #EFF0F9;
+           
+        }
+        th,td{
+            height: 40px;
+            box-sizing: border-box;
+            padding: 10px;
+            border:1px solid #E2E5EF;
+            border-collapse: collapse;
+        }
+        th{
+            font-size: 14px;
+            font-weight: 500;
+        }
+        td{
+            font-size: 14px;
+            font-weight: 400 
+        }
+        .moduleNumber{
+            text-align: center;
+        }
+        
+    }
+    // .filterBox{
+    //     margin: 0 0 20px 0;
+    // }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        margin-right: 20px;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 0;
+    }
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .rejectList, .usedList{
+        height: 120px;
+        li{
+            padding: 0 10px;
+        }
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .switchImg{
+        width: 30px;
+    }
+    .roleSelect {
+        position: relative;
+        top: 3px;
+        cursor: pointer;
+    }
+    .selectModuleType,.moduleItemInp,.selectUsed, .selectReject{
+        display: inline-block;
+        position: relative;
+        width:140px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+        padding-right: 26px;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .moduleItemInp{
+        cursor: default;
+        outline: none;
+    }
+    .moduleTypeList{
+         width: 160px;
+    }
+    .selectUsed, .selectReject{
+        width: 140px;
+    }
+    .modeTypeItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .rejectList, .usedList {
+        width: 140px;
+    }
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: -1px;
+        cursor: pointer;
+    }
+    .editItem{
+       color: @activeColor;
+       cursor: pointer;
+    }
+    .editItemDis{
+        color: #aaa;
+        cursor: not-allowed;
+    }
+    
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    
+    
+    .pagination{
+        margin: 35px 0 0 0  ;
+        text-align: right;
+    }
+    .totalSum{
+        font-size:12px;
+        line-height:17px;
+        color: #777777;
+        margin-right: 20px;
+    }
+    .pageNum,.prePage,.nextPage, .more{
+        display: inline-block;
+        width: 20px;
+        cursor: pointer;
+        margin: 0 20px 0 0;
+        text-align: center;
+        color: #777;
+    }
+    .prePage,.nextPage{
+        img{
+            position: relative;
+            top: 0px   ;
+        }
+    }
+     .more{
+        cursor: not-allowed;
+    }
+    .arrowPage{
+        width: 6px;
+    }
+    .activePage{
+        color: @activeColor;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+
+.usrContain .selectReject,.usrContain .selectModuleType ,.managerContainer .selectModuleType  {
+    float: right;
+}
+.usrContain .rejectList,.usrContain .usedList{
+    height: 200px;
+}
+.usrContain .selectModuleType, .usrContain .moduleItemInp, .usrContain .selectUsed, .usrContain .selectReject {
+    width: 170px;
+}
+.managerContainer .moduleTypeList {
+    width: 140px;
+}
+.managerContainer.usrContain .moduleTypeList {
+    width: 170px;
+    height: 400px;
+}
+.managerContainer.usrContain .selectReject {
+    width: 140px;
+}

+ 84 - 0
src/html/abnormal.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>异常数据监控</title>
+</head>
+
+<body>
+    <div class="container abnormal">
+        <div class="partTitle">
+          <p><span></span>异常数据监控</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>病人住院序号:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入病人住院序号">
+                </span>
+                <span class="filterItem typeFilter deptListWrap">
+                    <span>异常归属模块:</span>
+                    <span class="selectDept"> 
+                        全部
+                    </span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem " data-id=" " data-name="全部">全部</li>
+                        <li class="deptItem ellipsis" title="数据模块" data-id="1" data-name="数据模块">数据模块</li>
+                        <li class="deptItem ellipsis" title="质控类型" data-id="2" data-name="质控类型">质控类型</li>
+                        <li class="deptItem ellipsis" title="XML结构" data-id="3" data-name="XML结构">XML结构</li>
+                    </ul>
+                </span>
+                <span class="filterItem">
+                    <span>状态:</span>
+                    <span class="selectLevel">全部</span>
+                    <ul class="levelList filterDropList">
+                        <Li class="levelItem" data-name="全部" data-id=" ">全部</Li>
+                        <Li class="levelItem" data-name="未处理" data-status="0" data-id="0">未处理</Li>
+                        <Li class="levelItem" data-name="已处理" data-status="1" data-id="1">已处理</Li>
+                    </ul>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="beHospitalId textCenter">创建时间</th>
+                    <th class="beHospitalId textCenter">病人住院序号</th>
+                    <th class="patientNo textCenter" >异常归属模块</th>
+                    <th class="patientName textCenter" style="width: 100px;">异常说明</th>
+                    <th class="patientSex textCenter" >状态</th>
+                    <th class="patientage textCenter" >备注</th>
+                    <th class="patientage textCenter" style="width: 150px;">操作</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <!--<div class="tabFoot">
+                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                <span class="recordScoreBtn">评分</span>
+            </div>-->
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 2 - 2
src/html/console.html

@@ -17,7 +17,7 @@
     </div>
   </div>
   <div class="partTitleT"></div>
-  <div class="grayLine"></div>
+  <!--<div class="grayLine"></div>-->
   <div class="partWrap clearfix">
 
       <div class="part01 fl">
@@ -124,7 +124,7 @@
         
         <div class="pubEchartB paymoney">
           <p class="title">各科室质控平均分柱状图</p>
-          <div id="barChartPay" class="barChartPay"></div>
+          <div id="barChartPay" class="barChartPay" style="height: 217px;"></div>
         </div>
       </div>
 

+ 62 - 0
src/html/dayDetail.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>科室平均住院天数</title>
+</head>
+
+<body>
+    <div class="container dayDetail">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>科室平均住院天数</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入科室名称">
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>时间类型:</span>
+                    <span class="selectDept" data-id="1">本月平均住院天数</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="本月平均住院天数" data-id="1" data-name="本月平均住院天数">本月平均住院天数</li>
+                        <li class="deptItem ellipsis" title="上月平均住院天数" data-id="2" data-name="上月平均住院天数">上月平均住院天数</li>
+                        <li class="deptItem ellipsis" title="去年本月平均住院天数" data-id="3" data-name="去年本月平均住院天数">去年本月平均住院天数</li>
+                    </ul>
+                </span> -->
+                <!-- <span class="filterItem dayFilter">
+                    <span>时间类型:</span>
+                    <span class="selectLevel" data-id="1">本年平均住院天数</span>
+                    <ul class="levelList filterDropList">
+                        <Li class="levelItem" data-name="本年平均住院天数" data-status="1" data-id="1">本年平均住院天数</Li>
+                        <Li class="levelItem" data-name="去年平均住院天数" data-status="2" data-id="2">去年平均住院天数</Li>
+                    </ul>
+                </span> -->
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table class="tableDay">
+                    
+                </table>
+            </div>
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 124 - 0
src/html/deptConsole.html

@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+</head>
+<body class="console">
+  <div class="partDept">
+    <ul class="clearfix">
+      
+    </ul>
+  </div>
+  <div class="partTitle">
+    <p><span></span><i></i>数据概览</p>
+    <div class="monthYear">
+      <span class="mon">本月</span>
+      <span class="year">本年</span>
+    </div> 
+    <div class="toggleSlide fr">
+      <p><span>平均住院天数</span><img src="../images/arrow_down.png" alt=""> </p>
+      <ul>
+        <li class="toggleAverge toggleSlide1" data-str="平均住院天数" data-type="1">平均住院天数</li>
+        <li class="toggleAverge toggleSlide2" data-str="平均住院花费" data-type="2">平均住院花费</li>
+      </ul>
+    </div>
+    <div class="dateDetail fr">
+      
+    </div>
+  </div>
+  <div class="partTitleT"></div>
+  <div class="grayLine"></div>
+  <div class="partWrap clearfix">
+      <div class="part01 fl">
+        <p class="partTitlePub clearfix">
+          <span class="name">出院人数统计</span>
+          <span class="personNum">总人数:</span>
+        </p>
+        <ul class="clearfix">
+          <li>
+            <div class="lis">
+              <p class="numShow died"></p>
+              <p class="explainNum">死亡人数</p>
+            </div>
+          </li>
+          <li class="li03">
+            <div class="lis">
+              <p class="numShow patientNum"></p>
+              <p class="explainNum">手术病人数</p>
+            </div>
+          </li>
+        </ul>
+        <div class="defect">
+          <p class="partTitlePub">各模块缺陷占比排名</p>
+          <div class="list">
+            <table class="qtable">
+  
+            </table>
+          </div>
+        </div>
+      </div>
+      <div class="part02 fl">
+        <ul class="bingli clearfix">
+          <li class="fst">
+            <p class="numShow"></p>
+            <p class="explainNum">累计质控病历数</p>
+          </li>
+          <li>
+            <p class="numShow"></p>
+            <p class="explainNum">甲级病历</p>
+          </li>
+          <li>
+            <p class="numShow"></p>
+            <p class="explainNum">乙级病历</p>
+          </li>
+          <li class="four">
+            <p class="numShow"></p>
+            <p class="explainNum">丙级病历</p>
+          </li>
+        </ul>
+        <div class="bingliLis clearfix">
+          <p>病历评分等级占比</p>
+          <div class="panPartPub panPart02">
+            <div class="fen" id="fen01"></div>
+            <p>甲级占比</p>
+          </div>
+          <div class="panPartPub panPart01">
+            <div class="fen" id="fen02"></div>
+            <p>乙级占比</p>
+          </div>
+          <div class="panPartPub panPart03">
+            <div class="fen" id="fen03"></div>
+            <p>丙级占比</p>
+          </div>
+        </div>
+        <div class="circleB circleBSingle clearfix">
+          <p class="title">条目缺陷占比</p>
+          <div id="emptyCircleB" class="emptyCircle"></div>
+          <div class="explainPan explainPanB">
+            <table>
+              
+            </table>
+          </div>
+        </div>
+        <div class="circleBLis">
+          <div class="circleB homePage clearfix">
+            <p class="title">病案首页合格率占比</p>
+            <div id="lineChart" class="emptyCircle emptyLineCircle"></div>
+          </div>
+          <div class="circleB homePageNo clearfix">
+            <p class="title">条目缺陷占比</p>
+            <div id="emptyCircleBc" class="emptyCircle"></div>
+            <div class="explainPan explainPanc explainPanBc">
+              <table>
+                
+              </table>
+            </div>
+          </div>
+
+        </div>
+      </div>
+  </div>
+</body>
+</html>

+ 74 - 0
src/html/deptScoreDetail.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>科室缺陷占比</title>
+</head>
+
+<body>
+    <div class="container deptScoreDetail">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>科室缺陷占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>医生名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入医生名称">
+                </span>
+                <span class="filterItem typeFilter deptListWrap">
+                    <span style="overflow:hidden">科室:</span>
+                    <span class="selectDept ellipsis" data-id=" "><i>--</i></span>
+                    <ul class="deptList filterDropList">
+                        
+                    </ul>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="beHospitalId textCenter">科室编码</th>
+                    <th class="beHospitalId textCenter">主管医生</th>
+                    <th class="beHospitalId textCenter">缺陷总数</th>
+                    <th class="beHospitalId textCenter">质控平均分</th>
+                    <th class="beHospitalId textCenter">质控病历数</th>
+                    <th class="beHospitalId textCenter">甲级病历数</th>
+                    <th class="beHospitalId textCenter">乙级病历数</th>
+                    <th class="beHospitalId textCenter">丙级病历数</th>
+                    <th class="beHospitalId textCenter">甲级率</th>
+                    <th class="beHospitalId textCenter">乙级率</th>
+                    <th class="beHospitalId textCenter">丙级率</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <!--<div class="tabFoot">
+                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                <span class="recordScoreBtn">评分</span>
+            </div>-->
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 77 - 0
src/html/deptScoreDetailControl.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>各科室缺陷占比</title>
+</head>
+
+<body>
+    <div class="container deptScoreDetailControl">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>各科室缺陷占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入科室名称">
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>病历等级数:</span>
+                    <span class="selectDept" data-id="">全部</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="全部" data-id="" data-name="全部">全部</li>
+                        <li class="deptItem ellipsis" title="甲级病历数" data-id="甲级病历数" data-name="甲级病历数">甲级病历数</li>
+                        <li class="deptItem ellipsis" title="乙级病历数" data-id="乙级病历数" data-name="乙级病历数">乙级病历数</li>
+                        <li class="deptItem ellipsis" title="丙级病历数" data-id="丙级病历数" data-name="丙级病历数">丙级病历数</li>
+                    </ul>
+                </span> -->
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="beHospitalId textCenter">科室编码</th>
+                    <th class="beHospitalId textCenter">科室名称</th>
+                    <th class="beHospitalId textCenter">缺陷总数</th>
+                    <th class="beHospitalId textCenter">质控平均分</th>
+                    <th class="beHospitalId textCenter">质控病历数</th>
+                    <th class="beHospitalId textCenter">甲级病历数</th>
+                    <th class="beHospitalId textCenter">乙级病历数</th>
+                    <th class="beHospitalId textCenter">丙级病历数</th>
+                    <th class="beHospitalId textCenter">甲级率</th>
+                    <th class="beHospitalId textCenter">乙级率</th>
+                    <th class="beHospitalId textCenter">丙级率</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <!--<div class="tabFoot">
+                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                <span class="recordScoreBtn">评分</span>
+            </div>-->
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 42 - 16
src/html/index.html

@@ -8,10 +8,10 @@
 </head>
 <script type="text/html" id="menuTmpl">
     {{if subMenuList.length}}
-        <li class="list-1"><p>${name}</p>
+        <li class="list-1 ${code}"><p>${name}</p>
     {{else}}
         {{if showStatus==1}}
-            <li class="page" code="${code}">${name}
+            <li class="page ${code}" code="${code}">${name}
         {{/if}}
     {{/if}}
         <ul>
@@ -21,26 +21,52 @@
         </ul>
     </li>
 </script>
+<script type="text/html" id="miniMenuTmpl">
+    {{if subMenuList.length}}
+    <li class="list-1 ${code}">
+        {{else}}
+    <li class="page ${code}" code="${code}">
+        {{/if}}
+        <ul>
+            {{each subMenuList}}
+            <li class="page" code="${code}">${name}</li>
+            {{/each}}
+        </ul>
+    </li>
+</script>
 <body>
   <div class="container">
-      <div class="header clearfix">
-          <div class="title fl">
-              <img src="../images/logo.png" alt="logo" />
-              <span>AI病案质控平台</span>
-          </div>
-          <div class="login fr">
-              <a class="setting" id="userName" href="javascript:void(0);">***</a>
-              <ul class="userAction">
-                  <li id="changeWord">修改密码</li>
-                  <li><a class="login-out" href="./login.html">退出</a></li>
-              </ul>
-          </div>
-      </div>
       <div class="main-body clearfix">
           <div class="menu fl">
+              <div class="logo">
+                  <img src="../images/lantone.png" alt="">
+              </div>
+              <!--<a href="javescript:void(0);" class="slide-hide">
+                  <img src="../images/down.png" alt="">
+              </a>-->
               <ul></ul>
-              <div class="copy-right">©杭州朗通信息技术有限公司</div></div>
+              <div class="copy-right">©杭州朗通信息技术有限公司</div>
+          </div>
+          <div class="menu-mini fl">
+              <!--<a href="javescript:void(0);" class="slide-show">
+                  <img src="../images/up.png" alt="">
+              </a>-->
+              <ul></ul>
+          </div>
           <div class="main" id="mainBox">
+              <div class="header clearfix">
+                  <div class="title fl">
+                      <!--<img src="../images/logo.png" alt="logo" />-->
+                      <span>AI病案质控平台</span>
+                  </div>
+                  <div class="login fr">
+                      <a class="setting" id="userName" href="javascript:void(0);">***</a>
+                      <ul class="userAction">
+                          <li id="changeWord">修改密码</li>
+                          <li><a class="login-out" href="./login.html">退出</a></li>
+                      </ul>
+                  </div>
+              </div>
               <iframe src="./console.html" frameborder="0" id="contentIframe"></iframe>
           </div>
       </div>

+ 1 - 0
src/html/itemManager.html

@@ -44,6 +44,7 @@
                     </ul>
                 </span>
                 <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
             </div>
             <table>
                 <thead>

+ 53 - 0
src/html/jiaji.html

@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>各科室甲级病历占比</title>
+</head>
+
+<body>
+    <div class="container jiaji">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>各科室甲级病历占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入科室名称">
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                        <th class="moduleName" style="width: 65px;">序号</th>
+                        <th class="moduleItemName">科室名称</th>
+                        <th class="moduleScore" style="width: 80px;">甲级病历占比</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 25 - 22
src/html/login.html

@@ -7,36 +7,39 @@
   <title>登录页</title>
 </head>
 <body>
-  <div class="login">
-    <div class="logoTop">
+  <div class="login clearfix">
+    <!--<div class="logoTop">
       <img src="../images/lantone.png" alt="">
       <span></span>
       <i>AI病案质控平台</i>
-    </div>
-    <div class="loginForm clearfix">
-      <img src="../images/loginBg.png" class="loginBg" alt="">
+    </div>-->
+    <div class="bg fl">
       <p class="title">AI病案质控平台</p>
-      <div class="message">
-        <p class="welcome">欢迎使用!</p>
-        <div class="perPub">
-          <p>用户名</p>
-          <div class="iptWrap">
-            <img src="../images/yonghu.png" alt="">
-            <input type="text" placeholder="请输入用户名" id="username" value="" autocomplete="off">
+    </div>
+    <!--<div class="loginForm clearfix">-->
+      <div class="message fr">
+        <div class="inner">
+          <p class="welcome">欢迎使用!</p>
+          <div class="perPub">
+            <p>用户名</p>
+            <div class="iptWrap">
+              <img src="../images/yonghu.png" alt="">
+              <input type="text" placeholder="请输入用户名" id="username" value="" autocomplete="off">
+            </div>
           </div>
-        </div>
-        <br>
-        <div class="perPub">
-          <p>密码</p>
-          <div class="iptWrap">
-            <img src="../images/mima.png" alt="">
-            <input type="text" placeholder="请输入密码" id="password" value="" autocomplete="off">
+          <br>
+          <div class="perPub">
+            <p>密码</p>
+            <div class="iptWrap">
+              <img src="../images/mima.png" alt="">
+              <input type="text" placeholder="请输入密码" id="password" value="" autocomplete="off">
+            </div>
           </div>
+          <p class="waring"></p>
+          <div class="sureLogin">登录</div>
         </div>
-        <p class="waring"></p>
-        <div class="sureLogin">登录</div>
       </div>
-    </div>
+    <!--</div>-->
   </div>
 </body>
 </html>

+ 15 - 11
src/html/moduleManager.html

@@ -15,17 +15,21 @@
        <div class="main-body">
            <p class="totalSumBox">当前分数合计:<span class="totalSum"></span></p>
            <div class="tableWrapper">
-                <table>
-                    <thead>
-                        <th class="moduleNumber">序号</th>
-                        <th class="moduleName">模块名称</th>
-                        <th class="moduleScore">分值</th>
-                        <th class="moduleOpera">操作</th>
-                    </thead>
-                    <tbody>
-
-                    </tbody>
-                </table>
+                <div  class="tableTitle">
+                    <table>
+                        <tr>
+                            <td class="moduleNumber">序号</td>
+                            <td class="moduleName">模块名称</td>
+                            <td class="moduleScore">分值</td>
+                            <td class="moduleOpera">操作</td>
+                        </tr>
+                    </table>
+                </div>
+                <div  class="tableInfo">
+                    <table>
+                   
+                    </table>
+                </div>
            </div>
             
             <!-- <div class="saveModuleBox">

+ 62 - 0
src/html/mukuai.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title></title>
+    
+</head>
+
+<body>
+    <div class="managerContainer mukuai">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>各模块缺陷占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>模块名称:</span>
+                    <span class="">
+                        <input class="moduleItemInp" type="text" placeholder="请输入模块名称">
+                    </span>
+                </span>
+                <span class="filterItem typeFilter deptListWrap">
+                    <span style="overflow:hidden">科室:</span>
+                    <span class="selectDept ellipsis" data-id=" "><i>--</i></span>
+                    <ul class="deptList filterDropList">
+                        
+                    </ul>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">模块名称</th>
+                    <th class="moduleScore" style="width: 80px;">缺陷占比</th>
+                </thead>
+                <tbody>
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+        
+        
+        
+    </div>
+</body>
+
+</html>

+ 62 - 0
src/html/mukuaiControl.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title></title>
+    
+</head>
+
+<body>
+    <div class="managerContainer mukuai">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>各模块缺陷占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>模块名称:</span>
+                    <span class="">
+                        <input class="moduleItemInp" type="text" placeholder="请输入模块名称">
+                    </span>
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>科室:</span>
+                    <span class="selectDept" data-id=" "><i>--</i></span>
+                    <ul class="deptList filterDropList">
+                        
+                    </ul>
+                </span> -->
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">模块名称</th>
+                    <th class="moduleScore" style="width: 80px;">缺陷占比</th>
+                </thead>
+                <tbody>
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+        
+        
+        
+    </div>
+</body>
+
+</html>

+ 65 - 0
src/html/partDetail.html

@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>病案首页合格率占比</title>
+</head>
+
+<body>
+    <div class="container partDetail">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>病案首页合格率占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>主管医生:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入主管医生">
+                </span>
+                <span class="filterItem typeFilter deptListWrap">
+                    <span style="overflow:hidden">科室:</span>
+                    <span class="selectDept ellipsis" data-id=""><i>--</i></span>
+                    <ul class="deptList filterDropList">
+                        
+                    </ul>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="beHospitalId textCenter">科室编码</th>
+                    <th class="beHospitalId textCenter">主管医生</th>
+                    <th class="beHospitalId textCenter">缺陷总数</th>
+                    <th class="beHospitalId textCenter">质控平均分</th>
+                    <th class="beHospitalId textCenter">质控病历数</th>
+                    <th class="beHospitalId textCenter">合格率</th>
+                    <th class="beHospitalId textCenter">不合格率</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 67 - 0
src/html/partDetailControl.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>病案首页合格率占比</title>
+</head>
+
+<body>
+    <div class="container partDetailControl">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>病案首页合格率占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入科室名称">
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>合格率:</span>
+                    <span class="selectDept" data-id="">全部</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="全部" data-id="" data-name="全部">全部</li>
+                        <li class="deptItem ellipsis" title="合格" data-id="合格" data-name="合格">合格</li>
+                        <li class="deptItem ellipsis" title="不合格" data-id="不合格" data-name="不合格">不合格</li>
+                    </ul>
+                </span> -->
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                        <th class="moduleName" style="width: 65px;">序号</th>
+                        <th class="beHospitalId textCenter">科室编码</th>
+                        <th class="beHospitalId textCenter">科室名称</th>
+                        <th class="beHospitalId textCenter">缺陷总数</th>
+                        <th class="beHospitalId textCenter">质控平均分</th>
+                        <th class="beHospitalId textCenter">质控病历数</th>
+                        <th class="beHospitalId textCenter">合格率</th>
+                        <th class="beHospitalId textCenter">不合格率</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 75 - 0
src/html/payDetail.html

@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>科室平均住院花费</title>
+</head>
+
+<body>
+    <div class="container payDetail">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>科室平均住院花费</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入科室名称">
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>时间类型:</span>
+                    <span class="selectDept" data-id="1">本月平均住院花费</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="本月平均住院花费" data-id="1" data-name="本月平均住院花费">本月平均住院花费</li>
+                        <li class="deptItem ellipsis" title="上月平均住院花费" data-id="2" data-name="上月平均住院天数">上月平均住院花费</li>
+                        <li class="deptItem ellipsis" title="去年本月平均住院花费" data-id="3" data-name="去年本月平均住院花费">去年本月平均住院花费</li>
+                    </ul>
+                </span>
+                <span class="filterItem dayFilter">
+                    <span>时间类型:</span>
+                    <span class="selectLevel" data-id="1">本年平均住院花费</span>
+                    <ul class="levelList filterDropList">
+                        <Li class="levelItem" data-name="本年平均住院花费" data-status="1" data-id="1">本年平均住院花费</Li>
+                        <Li class="levelItem" data-name="去年平均住院花费" data-status="2" data-id="2">去年平均住院花费</Li>
+                    </ul>
+                </span> -->
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table class="tableDay">
+                    <thead>
+                        <th class="moduleName" style="width: 65px;">序号</th>
+                        <th class="beHospitalId textCenter">科室名称</th>
+                        <th class="patientNo textCenter" >平均住院花费(元)</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <!--<div class="tabFoot">
+                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                <span class="recordScoreBtn">评分</span>
+            </div>-->
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 23 - 13
src/html/qcList.html

@@ -24,8 +24,8 @@
                 </span>
                 <span class="filterItem typeFilter deptListWrap">
                     <span>科室:</span>
-                    <span class="selectDept"> 
-                        全部
+                    <span class="selectDept unSelect"> 
+                        选择科室
                     </span>
                    
                     <ul class="deptList filterDropList"></ul>
@@ -39,27 +39,37 @@
                     <input class="doctorNumInp" type="text" placeholder="请输入医生工号">
                 </span>
                 <span class="filterItem typeFilter clearfix">
-                    <span class="fl">院日期:</span>
+                    <span class="fl">院日期:</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" /></span>
                     <span  class="divide fl">-</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" /></span>
                 </span>
                 <span class="filterItem">
                     <span>病历等级:</span>
-                    <span class="selectLevel">全部</span>
+                    <span class="selectLevel unSelect">选择病历等级</span>
                     <ul class="levelList filterDropList">
-                        <Li class="levelItem" data-name="全部" data-id="">全部</Li>
                         <Li class="levelItem" data-name="未评分" data-id="未评分">未评分</Li>
                         <Li class="levelItem" data-name="甲" data-id="甲">甲</Li>
                         <li class="levelItem" data-name="乙" data-id=乙>乙</li>
                         <li class="levelItem" data-name="丙" data-id=丙>丙</li>
                     </ul>
                 </span>
+               
                 <span class="filter">查询</span>
+                <!-- <span class="reset">重置</span> -->
+                <span class="filterclear abnormalClear filterclearT">重置</span>
             </div>
             <div>
                 <table>
                     <thead>
+                    <tr>
+                        <td colspan="17">
+                            <div class="tabFoot">
+                                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
+                                <span class="recordScoreBtn">评分</span>
+                            </div>
+                        </td>
+                    </tr>
                     <th class="textCenter" ></th>
                     <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
                     <th class="beHospitalId textCenter" code="behospital_code">病人住院序号</th>
@@ -82,14 +92,14 @@
 
                     </tbody>
                     <tfoot>
-                    <tr>
-                        <td colspan="17">
-                            <div class="tabFoot">
-                                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
-                                <span class="recordScoreBtn">评分</span>
-                            </div>
-                        </td>
-                    </tr>
+                        <!-- <tr>
+                            <td colspan="17">
+                                <div class="tabFoot">
+                                    <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
+                                    <span class="recordScoreBtn">评分</span>
+                                </div>
+                            </td>
+                        </tr> -->
                     </tfoot>
                 </table>
             </div>

+ 33 - 24
src/html/qcListDept.html

@@ -24,8 +24,8 @@
                 </span>
                 <span class="filterItem typeFilter">
                     <span>科室:</span>
-                    <span class="selectDept"> 
-                        全部
+                    <span class="selectDept unSelect"> 
+                        选择科室
                     </span>
                    
                     <ul class="deptList filterDropList"></ul>
@@ -39,16 +39,15 @@
                     <input class="doctorNumInp" type="text" placeholder="请输入医生工号">
                 </span>
                 <span class="filterItem typeFilter clearfix">
-                    <span class="fl">院日期:</span>
+                    <span class="fl">院日期:</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" /></span>
                     <span  class="divide fl">-</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" /></span>
                 </span>
                 <span class="filterItem">
                     <span>病历等级:</span>
-                    <span class="selectLevel">全部</span>
+                    <span class="selectLevel unSelect">选择病历等级</span>
                     <ul class="levelList filterDropList">
-                        <Li class="levelItem" data-name="全部" data-id="">全部</Li>
                         <Li class="levelItem" data-name="未评分" data-id="未评分">未评分</Li>
                         <Li class="levelItem" data-name="甲" data-id="甲">甲</Li>
                         <li class="levelItem" data-name="乙" data-id=乙>乙</li>
@@ -56,32 +55,42 @@
                     </ul>
                 </span>
                 <span class="filter">查询</span>
+                <!-- <span class="reset">重置</span> -->
+                <span class="filterclear abnormalClear filterclearT">重置</span>
             </div>
             <div>
                 <table>
                     <thead>
-                    <th class="textCenter" ></th>
-                    <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
-                    <th class="beHospitalId textCenter" code="behospital_code">病人住院序号</th>
-                    <th class="patientNo textCenter" code="file_code">病案号</th>
-                    <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
-                    <th class="patientSex textCenter" code="sex">性别</th>
-                    <th class="patientage textCenter" code="age">年龄</th>
-                    <th class="bedNum textCenter" code="bed_code">床号</th>
-                    <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
-                    <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
-                    <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
-                    <th class="doctorName textCenter" code="doctor_name">主管医生</th>
-                    <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
-                    <th class="deptName textCenter" code="beh_dept_name">科室</th>
-                    <th class="recordLevel textCenter" code="level">病历等级</th>
-                    <th class="recordScore textCenter" code="score_res">病历得分</th>
-                    <th class="scoreTime textCenter" code="grade_time">评分时间</th>
+                        <tr>
+                            <td colspan="17">
+                                <div class="tabFoot">
+                                    <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
+                                    <span class="recordScoreBtn">评分</span>
+                                </div>
+                            </td>
+                        </tr>
+                        <th class="textCenter" ></th>
+                        <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
+                        <th class="beHospitalId textCenter" code="behospital_code">病人住院序号</th>
+                        <th class="patientNo textCenter" code="file_code">病案号</th>
+                        <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
+                        <th class="patientSex textCenter" code="sex">性别</th>
+                        <th class="patientage textCenter" code="age">年龄</th>
+                        <th class="bedNum textCenter" code="bed_code">床号</th>
+                        <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
+                        <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
+                        <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
+                        <th class="doctorName textCenter" code="doctor_name">主管医生</th>
+                        <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
+                        <th class="deptName textCenter" code="beh_dept_name">科室</th>
+                        <th class="recordLevel textCenter" code="level">病历等级</th>
+                        <th class="recordScore textCenter" code="score_res">病历得分</th>
+                        <th class="scoreTime textCenter" code="grade_time">评分时间</th>
                     </thead>
                     <tbody>
 
                     </tbody>
-                    <tfoot>
+                    <!-- <tfoot>
                     <tr>
                         <td colspan="17">
                             <div class="tabFoot">
@@ -90,7 +99,7 @@
                             </div>
                         </td>
                     </tr>
-                    </tfoot>
+                    </tfoot> -->
                 </table>
             </div>
 

+ 41 - 32
src/html/qcListPerson.html

@@ -24,8 +24,8 @@
                 </span>
                 <span class="filterItem typeFilter">
                     <span>科室:</span>
-                    <span class="selectDept"> 
-                        全部
+                    <span class="selectDept unSelect"> 
+                        选择科室
                     </span>
                    
                     <ul class="deptList filterDropList"></ul>
@@ -39,16 +39,15 @@
                 </span>
                
                 <span class="filterItem typeFilter clearfix">
-                    <span class="fl">院日期:</span>
+                    <span class="fl">院日期:</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" /></span>
                     <span  class="divide fl">-</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" /></span>
                 </span>
                 <span class="filterItem">
                     <span>病历等级:</span>
-                    <span class="selectLevel">全部</span>
+                    <span class="selectLevel unSelect">选择病历等级</span>
                     <ul class="levelList filterDropList">
-                        <Li class="levelItem" data-name="全部" data-id="">全部</Li>
                         <Li class="levelItem" data-name="未评分" data-id="未评分">未评分</Li>
                         <Li class="levelItem" data-name="甲" data-id="甲">甲</Li>
                         <li class="levelItem" data-name="乙" data-id=乙>乙</li>
@@ -56,41 +55,51 @@
                     </ul>
                 </span>
                 <span class="filter">查询</span>
+                <!-- <span class="reset">重置</span> -->
+                <span class="filterclear abnormalClear filterclearT">重置</span>
             </div>
             <div>
                 <table>
                     <thead>
-                    <th class="textCenter" ></th>
-                    <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
-                    <th class="beHospitalId textCenter" code="behospital_code">病人住院序号</th>
-                    <th class="patientNo textCenter" code="file_code">病案号</th>
-                    <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
-                    <th class="patientSex textCenter" code="sex">性别</th>
-                    <th class="patientage textCenter" code="age">年龄</th>
-                    <th class="bedNum textCenter" code="bed_code">床号</th>
-                    <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
-                    <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
-                    <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
-                    <th class="doctorName textCenter" code="doctor_name">主管医生</th>
-                    <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
-                    <th class="deptName textCenter" code="beh_dept_name">科室</th>
-                    <th class="recordLevel textCenter" code="level">病历等级</th>
-                    <th class="recordScore textCenter" code="score_res">病历得分</th>
-                    <th class="scoreTime textCenter" code="grade_time">评分时间</th>
+                        <tr>
+                            <td colspan="17">
+                                <div class="tabFoot">
+                                    <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
+                                    <span class="recordScoreBtn">评分</span>
+                                </div>
+                            </td>
+                        </tr>
+                        <th class="textCenter" ></th>
+                        <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
+                        <th class="beHospitalId textCenter" code="behospital_code">病人住院序号</th>
+                        <th class="patientNo textCenter" code="file_code">病案号</th>
+                        <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
+                        <th class="patientSex textCenter" code="sex">性别</th>
+                        <th class="patientage textCenter" code="age">年龄</th>
+                        <th class="bedNum textCenter" code="bed_code">床号</th>
+                        <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
+                        <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
+                        <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
+                        <th class="doctorName textCenter" code="doctor_name">主管医生</th>
+                        <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
+                        <th class="deptName textCenter" code="beh_dept_name">科室</th>
+                        <th class="recordLevel textCenter" code="level">病历等级</th>
+                        <th class="recordScore textCenter" code="score_res">病历得分</th>
+                        <th class="scoreTime textCenter" code="grade_time">评分时间</th>    
                     </thead>
                     <tbody>
 
                     </tbody>
-                    <tfoot>
-                    <tr>
-                        <td colspan="17">
-                            <div class="tabFoot">
-                                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
-                                <span class="recordScoreBtn">评分</span>
-                            </div>
-                        </td>
-                    </tr>
-                    </tfoot>
+                    <!-- <tfoot>
+                        <tr>
+                            <td colspan="17">
+                                <div class="tabFoot">
+                                    <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="../images/icon_unchecked.png" alt="checkbox">全选</span>
+                                    <span class="recordScoreBtn">评分</span>
+                                </div>
+                            </td>
+                        </tr>
+                    </tfoot> -->
                 </table>
             </div>
 

+ 34 - 9
src/html/qcScore.html

@@ -19,6 +19,19 @@
             </ul>
         </li>
     </script>
+    <script type="text/html" id="miniMenuTmpl">
+        {{if sonMode.length}}
+        <li class="list-1 ${code}">
+            {{else}}
+        <li class="page ${code}" code="${name}">
+            {{/if}}
+            <ul>
+                {{each sonMode}}
+                <li class="page" code="${name.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'')}">${name}</li>
+                {{/each}}
+            </ul>
+        </li>
+    </script>
     <script type="text/html" id="infoTmpl">
         <span>病案号:${fileCode}</span>
         <span>姓名:${name}</span>
@@ -550,18 +563,18 @@
         <div class="flaw-item" code="${modelName.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'')}">
             <div class="title">
                 {{if info}}
-                <a {{if pageKeyList[0]}} href="#anchor${pageKeyList[0]}" {{/if}}>${msg}(${info})</a>
+                <a {{if pageKeyList[0]}} anchors="${pageKeyList}" href="#anchor${pageKeyList[0]}" {{/if}}>${msg}(${info})</a>
                 {{else}}
-                <a {{if pageKeyList[0]}} href="#anchor${pageKeyList[0]}" {{/if}}>${msg}</a>
+                <a {{if pageKeyList[0]}} anchors="${pageKeyList}" href="#anchor${pageKeyList[0]}" {{/if}}>${msg}</a>
                 {{/if}}
             </div>
-            <div class="opers">
+            <div class="opers clearfix">
                 {{if score===0}}
-                <p>评分:<span class="red">warn</span></p>
+                <p class="fl">评分:<span class="red">warn</span></p>
                 {{else}}
-                <p>评分:<span class="red">-${score}</span></p>
+                <p class="fl">评分:<span class="red">-${score}</span></p>
                 {{/if}}
-                <div class="oper">
+                <div class="oper fr">
                     <a class="edit-flaw blue" code="${id}" href="javascript:void(0);" style="margin-right: 20px;">修改</a>
                     <a class="del-flaw red" code="${id}" href="javascript:void(0);">删除</a>
                 </div>
@@ -615,14 +628,26 @@
     </script>
 </head>
 <body>
-    <div class="patient-info" id="patientInfo"></div>
-    <p id="loading">加载中,请稍候 ...</p>
     <div class="main-part clearfix">
-        <div class="sub-menu content-ht">
+        <div class="sub-menu">
+            <div class="logo">
+                <img src="../images/lantone.png" alt="">
+            </div>
+            <!--<a href="javescript:void(0);" class="slide-show">
+                <img src="../images/up.png" alt="">
+            </a>-->
             <ul id="subMenu"></ul>
             <div class="copy-right">©杭州朗通信息技术有限公司</div>
         </div>
+        <div class="menu-mini fl">
+           <!-- <a href="javescript:void(0);" class="slide-show">
+                <img src="../images/down.png" alt="">
+            </a>-->
+            <ul></ul>
+        </div>
         <div class="tab-container clearfix">
+            <div class="patient-info" id="patientInfo"></div>
+            <p id="loading">加载中,请稍候 ...</p>
             <div class="flaw-table"></div>
             <div class="content-box fl" id="contentInfo"></div>
             <div class="operation fr" id="flaws">

+ 53 - 0
src/html/quexianDetail.html

@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>缺陷详情</title>
+    
+</head>
+
+<body>
+    <div class="managerContainer quexianDetail">
+        <div class="partTitle">
+          <p class="titlePic"></p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>缺陷名称:</span>
+                    <span class="">
+                        <input class="moduleItemInp" type="text" placeholder="请输入缺陷名称">
+                    </span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">缺陷名称</th>
+                    <th class="moduleItemName textCenter">数量</th>
+                    <th class="moduleScore" style="width: 80px;">缺陷占比</th>
+                </thead>
+                <tbody>
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+    </div>
+</body>
+
+</html>

+ 53 - 0
src/html/quexianDetailControl.html

@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>缺陷详情</title>
+    
+</head>
+
+<body>
+    <div class="managerContainer quexianDetailControl">
+        <div class="partTitle">
+          <p class="titlePic"></p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>缺陷名称:</span>
+                    <span class="">
+                        <input class="moduleItemInp" type="text" placeholder="请输入缺陷名称">
+                    </span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">缺陷名称</th>
+                    <th class="moduleItemName textCenter">数量</th>
+                    <th class="moduleScore" style="width: 80px;">缺陷占比</th>
+                </thead>
+                <tbody>
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+    </div>
+</body>
+
+</html>

+ 70 - 0
src/html/quexianXQ.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>病案首页合格率占比</title>
+</head>
+
+<body>
+    <div class="container quexianXQ">
+        <div class="partTitle">
+          <p><span></span>病案首页合格率占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室名称:</span>
+                    <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入科室名称">
+                </span>
+                <span class="filterItem typeFilter deptListWrap">
+                    <span>时间类型:</span>
+                    <span class="selectDept" data-id="1">本月平均住院花费</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="本月平均住院花费" data-id="1" data-name="本月平均住院花费">本月平均住院花费</li>
+                        <li class="deptItem ellipsis" title="上月平均住院花费" data-id="2" data-name="上月平均住院天数">上月平均住院花费</li>
+                        <li class="deptItem ellipsis" title="去年本月平均住院花费" data-id="3" data-name="去年本月平均住院花费">去年本月平均住院花费</li>
+                    </ul>
+                </span>
+                <span class="filterItem dayFilter">
+                    <span>时间类型:</span>
+                    <span class="selectLevel" data-id="1">本年平均住院花费</span>
+                    <ul class="levelList filterDropList">
+                        <Li class="levelItem" data-name="本年平均住院花费" data-status="1" data-id="1">本年平均住院花费</Li>
+                        <Li class="levelItem" data-name="去年平均住院花费" data-status="2" data-id="2">去年平均住院花费</Li>
+                    </ul>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="beHospitalId textCenter">科室名称</th>
+                    <th class="patientNo textCenter" >平均住院天数</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 60 - 0
src/html/tiaomu.html

@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title></title>
+    
+</head>
+
+<body>
+    <div class="managerContainer tiaomu">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>条目缺陷占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>条目名称:</span>
+                    <span class="">
+                        <input class="moduleItemInp" type="text" placeholder="请输入条目名称">
+                    </span>
+                </span>
+                <span class="filterItem typeFilter deptListWrap">
+                    <span style="overflow:hidden">科室:</span>
+                    <span class="selectDept ellipsis" data-id=" "><i>--</i></span>
+                    <ul class="deptList filterDropList">
+                        
+                    </ul>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">条目名称</th>
+                    <th class="moduleItemName">数量</th>
+                    <th class="moduleScore" style="width: 80px;">缺陷占比</th>
+                </thead>
+                <tbody>
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+    </div>
+</body>
+
+</html>

+ 60 - 0
src/html/tiaomuControl.html

@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title></title>
+    
+</head>
+
+<body>
+    <div class="managerContainer tiaomu">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>条目缺陷占比</p>
+          <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div> 
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="grayLine"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>条目名称:</span>
+                    <span class="">
+                        <input class="moduleItemInp" type="text" placeholder="请输入条目名称">
+                    </span>
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>科室:</span>
+                    <span class="selectDept" data-id=" "><i>--</i></span>
+                    <ul class="deptList filterDropList">
+                        
+                    </ul>
+                </span> -->
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">条目名称</th>
+                    <th class="moduleItemName">数量</th>
+                    <th class="moduleScore" style="width: 80px;">缺陷占比</th>
+                </thead>
+                <tbody>
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+    </div>
+</body>
+
+</html>

+ 1 - 0
src/html/userManager.html

@@ -39,6 +39,7 @@
                     </ul>
                 </span> -->
                 <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
             </div>
             <table>
                 <thead>

BIN
src/images/ba.png


BIN
src/images/ba_a.png


BIN
src/images/data.png


BIN
src/images/data_a.png


BIN
src/images/down.png


BIN
src/images/head.png


BIN
src/images/home.png


BIN
src/images/home_a.png


BIN
src/images/icon_down.png


BIN
src/images/index.png


BIN
src/images/index_a.png


BIN
src/images/inhis.png


BIN
src/images/inhis_a.png


BIN
src/images/item.png


BIN
src/images/item_a.png


BIN
src/images/loginBg2.png


BIN
src/images/module.png


BIN
src/images/module_a.png


BIN
src/images/out.png


BIN
src/images/out_a.png


BIN
src/images/prod.png


BIN
src/images/prod_a.png


BIN
src/images/qxgl.png


BIN
src/images/qxgl_a.png


BIN
src/images/total.png


BIN
src/images/total_a.png


BIN
src/images/un.png


BIN
src/images/un_a.png


BIN
src/images/up.png


+ 530 - 0
src/js/abnormal.js

@@ -0,0 +1,530 @@
+const $ = require('jquery');
+require("../css/abnormal.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        size: 15,
+        behospitalCode: behospitalCode||"",//病历号
+        type: deptId||"",//(1:数据模块 2:质控类型 3:XML结构)
+        status: level||"",//(0:未处理,1:已处理)
+        statisticsType: statisticsType||2, //1-本月,2-本年
+    }
+    post(api.getQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(tabList,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.gmtCreate || "-"}</td>
+                <td>${item.behospitalCode || "-"}</td>
+                <td >${item.typeName || "-"}</td>
+                <td>${item.description || "-"}</td>
+                <td>${item.statusName || "-"}</td>
+                <td>${item.remark || "-"}</td>
+                <td  class="textCenter">
+                    <span data-index="${i}" data-type="1" class="patientNameSpan">修改</span>
+
+                    <span data-index="${i}" data-type="2" class="patientNameSpan patientNameSpans">删除</span>
+                </td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindScoreDetail(hisId)
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}<img class="arrow" src=${iconDown} alt="下拉"></span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">删除记录<img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">确定</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str+`<img class="arrow" src=${iconDown} alt="下拉"></img>`)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 54 - 1
src/js/api.js

@@ -1,5 +1,14 @@
 
 const api = {
+    getMenu:'/sys/user/getUserOrgMenu',     //获取菜单
+    midifyPassword:'/sys/user/midifyPassword',     //修改密码
+    getSubMenu:'/qc/mode/getMenu',   //获取质控评分菜单
+    delScore:'/qc/behospitalInfo/delCase' ,//删除评分项
+    editScore:'/qc/behospitalInfo/updCase' ,//修改评分
+    addScore:'/qc/behospitalInfo/addCase' ,//添加评分项
+    getRecordDetail:'/qc/behospitalInfo/getByBehospitalCode', //获取病例明细
+    getInfoModule:'/qc/module/getById',
+    getModuleById:'/qc/module/getModuleMap',
     getQcCases:'/qc/cases/getQcCases',
     getQcCasesAll:'/qc/casesEntryHospital/getQcCasesAll',
     getQcCasesEntryAll:'/qc/casesEntryHospital/getQcCasesEntryAll',
@@ -13,7 +22,51 @@ const api = {
     getDeptList:'/bas/dept/getList',
     getDeptListUser:'/bas/dept/listForUser',
     getDeptListDept:'/bas/dept/getListUser',
+    getAverageDayNum:'/console/getAverageDayNum',//平均住院天数
+    getAverageFee:'/console/getAverageFee',//平均住院费用
+    getAverageScore:'/console/getAverageScore',//各科室质控平均分
+    leaveHosCount:'/console/leaveHosCount',//出院人数统计
+    mrCount:'/console/mrCount',//质控病历统计
+    entryCountGroupByCase:'/console/entryCountGroupByCase',//各模块缺陷占比排行
+    getLevelResultDept:'/console/getLevelResultDept',//各科室甲级占比
+    entryCountGroupByEntry:'/console/entryCountGroupByEntry',//条目缺陷占比
+    entryByDept:'/console/entryByDept',//各科室缺陷占比
+    getDept:'/consoleByDept/getDept',//获取科室列表
+    leaveHosCountByDept:'/consoleByDept/leaveHosCountByDept',//出院人数统计
+    mrCountByDept:'/consoleByDept/mrCountByDept',//质控病历统计
+    getJwt:'/sys/user/getJwt',//登录
+    getRoleMenu:'/sys/role/getRoleMenu',//获取角色菜权限单等数据
+    list:'/sys/role/list', //获取角色列表信息
+    userPage:'/sys/user/userPage',
+    getUserDepts:'/sys/user/getUserDepts',
+    getUserRoles:'/sys/user/getUserRoles',
+    disable:'/sys/user/disable',
+    enable:'/sys/user/enable',
+    editUserDepts:'/sys/user/editUserDepts',
+    editUserRoles:'/sys/user/editUserRoles',
+    listForUserRole:'/sys/role/listForUser',
+    saveRoleMenu:'/sys/role/saveRoleMenu',//修改角色菜单权限数据
+    entryCountGroupByEntryAndDept:'/consoleByDept/entryCountGroupByEntryAndDept',//条目缺陷占比
+    entryCountGroupByCaseAndDept:'/consoleByDept/entryCountGroupByCaseAndDept',//各模块缺陷占比排行
+    entryCountGroupByEntryAndDeptPage:'/consoleByDept/entryCountGroupByEntryAndDeptPage',//条目明细(科室)
+    entryCountGroupByCaseAndDeptPage:'/consoleByDept/entryCountGroupByCaseAndDeptPage',//模块缺陷占比明细(科室)
+    entryCountGroupByEntryPage:'/console/entryCountGroupByEntryPage',//条目明细
+    entryCountGroupByCasePage:'/console/entryCountGroupByCasePage',//模块缺陷占比明细
+    getAverageDayNumPage:'/console/getAverageDayNumPage',//住院天数详情
+    getAverageFeePage:'/console/getAverageFeePage',//花费详情
+    delQcAnnormal:'/qc/abnormal/delQcAnnormal',//异常数据删除
+    getQcAnnormal:'/qc/abnormal/getQcAnnormal',//异常数据查询
+    saveQcAnnormal:'/qc/abnormal/saveQcAnnormal',//异常数据修改
+    resultStatisticsByDeptPage:'/console/resultStatisticsByDeptPage',//各科室缺陷占比排行(分页)
+    levelPercentGroupByDeptPage:'/console/levelPercentGroupByDeptPage',//甲级科室缺陷占比排行(分页)台州
+    levelStatistics:'/console/levelStatistics',//科室缺陷占比排行(组合全局)
+    homePageLevelStatistics:'/console/homePageLevelStatistics',//病案首页合格率占比
+    homePageLevelLimit:'/console/homePageLevelLimit',//病案首页合格率占比
+    homePageLevelByDeptLimit:'/consoleByDept/homePageLevelStatisticsByDept',//病案首页合格率占比keshi详情
+    homePageLevelStatisticsByDept:'/consoleByDept/homePageLevelByDeptLimit',//病案首页合格率占比(科室)-内页
+    levelStatisticsByDept:'/consoleByDept/levelStatisticsByDept',//科室缺陷占比排行
+    resultStatisticsByDeptAndDoctorPage:'/consoleByDept/resultStatisticsByDeptAndDoctorPage'//缺陷明细-科室(分页)-内页
 }
 module.exports = {
     api
-};
+};

+ 191 - 46
src/js/console.js

@@ -5,14 +5,20 @@ require("../images/logo.png")
 require("../images/arrow_down.png")
 
 // import 'zrender/lib/svg/svg';
+const {api} = require('./api.js')
 const echarts = require('echarts');
 const {post,setCookie,delCookie,getCookie} = require('../js/utils.js');
-let payMoney = [],dayLis = [],dateType = 2,slideType = 1;
+let payMoney = [],dayLis = [],dateType = 2,slideType = 1,hospital=getCookie("hospital");
 $(function(){
     if(!hasData('YH-KZT')){
         $("body").html('')
     }
-    $(".partTitle p span").html(getCookie("hospital"))
+    if(hospital == "台州市立"){
+        $(".part03 .partTitlePub .name").html('各科室甲级病例占比')
+    }else{
+        $(".part03 .partTitlePub .name").html('病案首页合格率')
+    }
+    $(".partTitle p span").html(hospital)
     setInterval(() => {
         getTimeDetail()
     }, 1000);
@@ -53,7 +59,30 @@ $(function(){
         }
         $(this).parent().slideToggle().prev().find("span").html(str)
     })
+    getDetails()
 })
+function getDetails(){
+    $(".part02 .bingli,.part02 .bingliLis,.part03 .circle .title,.pubEchartB.paymoney .title").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","deptScoreDetailControl.html")
+        $(".container",parent.document).removeClass("console-cont");
+    })
+    $(".part03 .partTitlePub").click(function(){
+        $(parent.document).find("#contentIframe").attr("src",hospital=="台州市立"?"jiaji.html":"partDetailControl.html")
+        $(".container",parent.document).removeClass("console-cont");
+    })
+    $(".paymoney.pubEchart .title").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","dayDetail.html")
+        $(".container",parent.document).removeClass("console-cont");
+    })
+    $(".defect .partTitlePub").click(function(){//from 1 console / 2  deptConsole
+        $(parent.document).find("#contentIframe").attr("src","mukuaiControl.html?from=1&dateType="+dateType)
+        $(".container",parent.document).removeClass("console-cont");
+    })
+    $(".circleB .title").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","tiaomuControl.html?from=1&dateType="+dateType)
+        $(".container",parent.document).removeClass("console-cont");
+    })
+}
 //判断有无某一权限
 function hasData(data){
     let lis = JSON.parse(getCookie("codeLis"))
@@ -72,22 +101,22 @@ function resizeBox(){
 function dateChange(){
     $(".monthYear .mon").click(function(){
         $(this).css({
-            backgroundColor:'#5A8EEE',
+            backgroundColor:'#00A1FF',
             color:'#fff'
         }).siblings().css({
-            color:'#5A8EEE',
-            backgroundColor:'#fff'
+            color:'#fff',
+            backgroundColor:'#203463'
         })
         dateType = 1
         getBarData(1)
     })
     $(".monthYear .year").click(function(){
         $(this).css({
-            backgroundColor:'#5A8EEE',
+            backgroundColor:'#00A1FF',
             color:'#fff'
         }).siblings().css({
-            color:'#5A8EEE',
-            backgroundColor:'#fff'
+            color:'#fff',
+            backgroundColor:'#203463'
         })
         dateType = 2
         getBarData(2)
@@ -134,9 +163,8 @@ function initConsole(result){
 }
 //获取图表数据
 function getBarData(type){
-    console.log(slideType,'797979898')
     if(hasData('FUNC000045')){
-        post('/console/getAverageDayNum',{//平均住院天数
+        post(api.getAverageDayNum,{//平均住院天数
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -152,7 +180,7 @@ function getBarData(type){
         $(".toggleSlide1").css("opacity",0.5)
     }
     if(hasData('FUNC000046')){
-        post('/console/getAverageFee',{//平均住院费用
+        post(api.getAverageFee,{//平均住院费用
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -168,7 +196,7 @@ function getBarData(type){
         $(".toggleSlide2").css("opacity",0.5)
     }
     if(hasData('FUNC000047')){
-        post('/console/getAverageScore',{//各科室质控平均分
+        post(api.getAverageScore,{//各科室质控平均分
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -183,8 +211,8 @@ function getBarData(type){
             }
         })
     }
-    if(hasData('FUNC000048')){
-        post('/console/getLevelResultDept',{//各科室甲级占比
+    if(hasData('FUNC000048')&&hospital=="台州市立"){
+        post(api.getLevelResultDept,{//各科室甲级占比
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -199,8 +227,24 @@ function getBarData(type){
             }
         })
     }
+    if(hasData('FUNC000075')&&hospital=="长兴医院"){
+        post(api.homePageLevelLimit,{//病案首页
+            "type": type||1//1月2年
+        }).then((res)=>{
+            let data = res.data;
+            if(data.code == 0){
+                let result1 = data.data||[]
+                let dataX1=[],dataY1=[]
+                for(let i = 0;i < result1.length;i++){
+                    dataX1.push(result1[i].deptName)
+                    dataY1.push(result1[i].firstLevelPercentStr.replace('%',''))
+                }
+                lineChartSpecial(dataX1,dataY1)
+            }
+        })
+    }
     if(hasData('FUNC000049')){
-        post('/console/leaveHosCount',{//出院人数统计
+        post(api.leaveHosCount,{//出院人数统计
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -213,7 +257,7 @@ function getBarData(type){
         })
     }
     if(hasData('FUNC000050')){
-        post('/console/mrCount',{//质控病历统计
+        post(api.mrCount,{//质控病历统计
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data
@@ -260,18 +304,19 @@ function getBarData(type){
         })
     }
     if(hasData('FUNC000051')){
-        post('/console/entryCountGroupByCase',{//各模块缺陷占比排行
+        post(api.entryCountGroupByCase,{//各模块缺陷占比排行
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
             if(data.code == 0){
-                let result1 = data.data['各模块缺陷占比排行']||[]
+                let result1 = data.data['各模块缺陷占比排行']||[];
+                result1.length>8?result1.length=8:"";
                 queList(result1)
             }
         })
     }
     if(hasData('FUNC000052')){
-        post('/console/entryCountGroupByEntry',{//条目缺陷占比
+        post(api.entryCountGroupByEntry,{//条目缺陷占比
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -286,7 +331,7 @@ function getBarData(type){
         })
     }
     if(hasData('FUNC000053')){
-        post('/console/entryByDept',{//各科室缺陷占比
+        post(api.entryByDept,{//各科室缺陷占比
             "type": type||1//1月2年
         }).then((res)=>{
             let data = res.data;
@@ -356,7 +401,7 @@ function part02pan(data,dom){
     let color = ['#37CBCB','#dedede'];
     let echartData = data;
     option = {
-        backgroundColor: bgColor,
+        //backgroundColor: bgColor,
         color: color,
         title: [{
             text:'{val|' + echartData[0].percentStr + '}',
@@ -366,7 +411,7 @@ function part02pan(data,dom){
                 rich: {
                     val: {
                         fontSize: 14,
-                        color: '#333',
+                        color: '#fff',
                         fontWeight: 'bold',
                         padding: [10, 0]
                     },
@@ -400,7 +445,7 @@ function lineChart(dataX,dataY){
         myCharts.resize()
     });
     option = {
-        color:"#5A8EEE",
+        color:"#00A1FF",
         tooltip: {
             trigger: 'axis',
             color:'#fff',
@@ -421,7 +466,7 @@ function lineChart(dataX,dataY){
             left: 0,
             textStyle: {
                 fontSize: 14,
-                color:'#666666',
+                color:'#fff',
                 fontWeight: 400
             }
         }],
@@ -450,7 +495,7 @@ function lineChart(dataX,dataY){
             data: dataX,
             axisLabel: {//x轴刻度
                 textStyle: {
-                    color: '#333'
+                    color: '#fff'
                 },
                 rotate:'45',
                 formatter: function (value) {
@@ -463,7 +508,7 @@ function lineChart(dataX,dataY){
             },
             axisLine: {//x轴
                 lineStyle:{
-                    color:'#AAAAAA'
+                    color:'#fff'
                 }
             }
         },
@@ -472,7 +517,7 @@ function lineChart(dataX,dataY){
             axisLabel: {
                 formatter: '{value} %',
                 textStyle: {
-                    color: '#333333'
+                    color: '#fff'
                 }
             },
             
@@ -498,6 +543,98 @@ function lineChart(dataX,dataY){
     };
     myCharts.setOption(option);
 }
+
+function lineChartSpecial(dataX,dataY){
+    var myCharts = echarts.init(document.getElementById('lineChart'));
+    var lengthNum = dataX.length;
+    $(window).resize(function(){
+        myCharts.resize()
+    });
+    option = {
+        color: ['#3398DB'],
+        tooltip: {
+            trigger: 'axis',
+            position: 'right',
+            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
+                type: 'line'        // 默认为直线,可选为:'line' | 'shadow'
+            }
+        },
+        grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            containLabel: true
+        },
+        xAxis: [
+            {
+                type: 'category',
+                data: dataX,
+                axisTick: {
+                    alignWithLabel: true
+                },
+                axisLabel: {//x轴刻度
+                    textStyle: {
+                        color: '#fff'
+                    },
+                    rotate:45,
+                    formatter: function (value) {
+                        //x轴的文字改为竖版显示
+                        if(value.length>7){
+                            return value.slice(0,7)+'...'
+                        }
+                        return value;
+                     }
+                },
+                axisLine: {//x轴
+                    lineStyle:{
+                        color:'#fff'
+                    }
+                }
+            }
+        ],
+        yAxis: [
+            {
+                type: 'value',
+                axisLine: {//y轴
+                    show: false
+                },
+                axisTick: {
+                    show: false
+                },
+                axisLabel: {//y轴刻度
+                    textStyle: {
+                        color: '#fff'
+                    }
+                },
+                splitLine:{//分割线
+                    lineStyle:{
+                        color:'#4A5D8E'
+                    }
+                }
+            }
+            
+        ],
+        title:[{
+            text: '合格率',
+            top: 15,
+            left: 10,
+            textStyle: {
+                fontSize: 14,
+                color:'#fff',
+                fontWeight: 400
+            }
+        }],
+        series: [
+            {
+                name: '质控平均分',
+                type: 'bar',
+                barWidth: '23%',
+                data: dataY
+            }
+        ]
+    };
+    myCharts.setOption(option);
+}
 //柱状图住院费用
 function barChartPay(dataX,dataY){
     var myCharts = echarts.init(document.getElementById('barChartPay'));
@@ -529,7 +666,7 @@ function barChartPay(dataX,dataY){
                 },
                 axisLabel: {//x轴刻度
                     textStyle: {
-                        color: '#333'
+                        color: '#fff'
                     },
                     rotate:45,
                     formatter: function (value) {
@@ -558,12 +695,12 @@ function barChartPay(dataX,dataY){
                 },
                 axisLabel: {//y轴刻度
                     textStyle: {
-                        color: '#333333'
+                        color: '#fff'
                     }
                 },
                 splitLine:{//分割线
                     lineStyle:{
-                        color:'#EFF3FC'
+                        color:'#4A5D8E'
                     }
                 }
             }
@@ -575,7 +712,7 @@ function barChartPay(dataX,dataY){
             left: 10,
             textStyle: {
                 fontSize: 14,
-                color:'#666666',
+                color:'#fff',
                 fontWeight: 400
             }
         }],
@@ -689,7 +826,7 @@ function barChart(data,type){
         data3.push(data[i].lastYearAverageValue)//去年本月
     }
     option = {
-        color: ['#5A8EEE', '#FAD336', '#37CBCB'],
+        color: ['#00A1FF', '#FAD336', '#37CBCB'],
         tooltip: {
             trigger: 'axis',
             axisPointer: {
@@ -708,7 +845,7 @@ function barChart(data,type){
             left: 10,
             textStyle: {
                 fontSize: 14,
-                color:'#666666',
+                color:'#fff',
                 fontWeight: 400
             }
         }],
@@ -718,6 +855,9 @@ function barChart(data,type){
             right:15,
             top:15,
             selectedMode:false,
+            textStyle:{
+                color:'#fff'
+            },
             formatter: function (name) {
                 return name;
             }
@@ -742,7 +882,7 @@ function barChart(data,type){
                 data:  dataX,
                 axisLabel: {//x轴刻度
                     textStyle: {
-                        color: '#333'
+                        color: '#fff'
                     },
                     rotate:'45',
                     formatter: function (value) {
@@ -755,7 +895,7 @@ function barChart(data,type){
                 },
                 axisLine: {//x轴
                     lineStyle:{
-                        color:'#AAAAAA'
+                        color:'#4A5D8E'
                     }
                 },
             }
@@ -769,9 +909,14 @@ function barChart(data,type){
                 axisTick: {
                     show: false
                 },
+                axisLabel: {//y轴刻度
+                  textStyle: {
+                    color: '#fff'
+                  }
+                },
                 splitLine:{//分割线
                     lineStyle:{
-                        color:'#EFF3FC'
+                        color:'#4A5D8E'
                     }
                 }
             }
@@ -810,7 +955,7 @@ function emptyCircle(data){
     $(window).resize(function(){
         myChart.resize()
     });
-    let bgColor = '#fff';
+    let bgColor = '#203463';
     let title = '总量';
     let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
     let echartData = data;
@@ -819,7 +964,7 @@ function emptyCircle(data){
         total += echartData[i].num
     }
     option = {
-        backgroundColor: bgColor,
+        /*backgroundColor: bgColor,*/
         color: color,
         title: [{
             text: data.length>0?'{val|' + total + '}\n{name|' + title + '}':'',
@@ -829,14 +974,14 @@ function emptyCircle(data){
                 rich: {
                     val: {
                         fontSize: 24,
-                        color: '#333',
+                        color: '#fff',
                         fontWeight: 'bold',
                         padding: [10, 0]
                     },
                     name: {
                         fontSize: 12,
                         fontWeight: 'normal',
-                        color: '#777',
+                        color: '#fff',
                     }
                 }
             }
@@ -904,7 +1049,7 @@ function emptyCircleB(data){
     $(window).resize(function(){
         myChart.resize()
     });
-    let bgColor = '#fff';
+    let bgColor = '#203463';
     let title = '总量';
     let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
     let echartData = data;
@@ -913,7 +1058,7 @@ function emptyCircleB(data){
         total += echartData[i].num
     }
     option = {
-        backgroundColor: bgColor,
+        /*backgroundColor: bgColor,*/
         color: color,
         title: [{
             text: data.length>0?'{val|' + total + '}\n{name|' + title + '}':'',
@@ -923,14 +1068,14 @@ function emptyCircleB(data){
                 rich: {
                     val: {
                         fontSize: 24,
-                        color: '#333',
+                        color: '#fff',
                         fontWeight: 'bold',
                         padding: [10, 0]
                     },
                     name: {
                         fontSize: 12,
                         fontWeight: 'normal',
-                        color: '#777',
+                        color: '#fff',
                     }
                 }
             }
@@ -1006,8 +1151,8 @@ function queList(data){
     for(let i = 0;i < data.length;i++){
         strAll += `
             <tr>
-                <td style="text-align:center;"><i style="background:${i < 3?'#bea571':'#eff3fc'};color:${i < 3?'#fff':'#999'};">${i+1}</i></td>
-                <td>${data[i].name}</td>
+                <td style="text-align:center;"><i style="background:${i < 3?'#ECB22E':'#526186'};color:${i < 3?'#fff':'#B7BDCC'};">${i+1}</i></td>
+                <td><p class="td02name">${data[i].name}</p></td>
                 <td>${data[i].num}</td>
                 <td>${data[i].percentStr}</td>
             </tr>

+ 548 - 0
src/js/dayDetail.js

@@ -0,0 +1,548 @@
+const $ = require('jquery');
+require("../css/dayDetail.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        size: 15,
+        name: behospitalCode||"",
+        type: statisticsType||2, //1-本月,2-本年
+        dateType: "",//(3-上月,4-去年本月,5-去年(必填))
+    }
+    post(api.getAverageDayNumPage,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(tabList,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = '',tmp = ''
+    
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.name || "-"}</td>
+                <td >${item.totleValue}</td>
+                <td >${item.lastAverageValue}</td>
+                <td style="display:${statisticsType==1?'table':'none'}">${item.lastYearAverageValue}</td>
+            </tr>
+        `
+    }
+    let sts = `
+        ${statisticsType==1?`<thead class="monType">
+            <th class="moduleName" style="width: 65px;">序号</th>
+            <th class="beHospitalId textCenter">科室名称</th>
+            <th class="patientNo textCenter" >上月平均住院天数(天)</th>
+            <th class="patientNo textCenter" >本月平均住院天数(天)</th>
+            <th class="patientNo textCenter" >去年本月平均住院天数(天)</th>
+        </thead>`:`
+        <thead class="yearType">
+            <th class="moduleName" style="width: 65px;">序号</th>
+            <th class="beHospitalId textCenter">科室名称</th>
+            <th class="patientNo textCenter" >本年平均住院天数(天)</th>
+            <th class="patientNo textCenter" >去年平均住院天数(天)</th>
+        </thead>
+        `}
+        <tbody>
+            ${str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>'}
+        </tbody>
+    `
+    $('.tableDay').html(sts)
+    bindScoreDetail(hisId)
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        levelTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 743 - 0
src/js/deptConsole.js

@@ -0,0 +1,743 @@
+const $ = require('jquery');
+require("../css/reset.less")
+require("../css/deptConsole.less")
+require("../images/logo.png")
+require("../images/arrow_down.png")
+
+// import 'zrender/lib/svg/svg';
+const {api} = require('./api.js')
+const echarts = require('echarts');
+const {post,setCookie,delCookie,getCookie} = require('../js/utils.js');
+let payMoney = [],dayLis = [],dateType = 2,curDept = '',datafst=[],datasec=[],datatrd=[],datafour=[],hospital=getCookie("hospital");
+$(function(){
+    if(!hasData('YH-KZT')&&!hasData('YH-KZTKS')){
+        $("body").html('')
+    }
+    if(hospital == "台州市立"){
+        $(".circleBSingle").css("display","block")
+        $(".circleBLis").css("display","none")
+    }else{
+        $(".circleBSingle").css("display","none")
+        $(".circleBLis").css("display","block")
+    }
+    $(".partTitle p span").html(hospital)
+    setInterval(() => {
+        getTimeDetail()
+    }, 1000);
+    // resizeBox()
+    initConsole()//质控列表
+    getOwnDept()
+    dateChange()
+    $(window).click(function(){
+        window.parent.userActionHide()
+        $(".toggleSlide ul").css("display","none")
+    })
+                
+    $(".toggleSlide p").click(function(e){
+        e.stopPropagation()
+        $(this).next().slideToggle()
+    })
+
+    tiaomu()
+})
+function tiaomu(){
+    $(".defect .partTitlePub").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","mukuai.html?from=2&deptName="+curDept+"&dateType="+dateType)
+    })
+    $(".circleBSingle .title,.homePageNo .title").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","tiaomu.html?from=2&deptName="+curDept+"&dateType="+dateType)
+    })
+    $(".homePage .title").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","partDetail.html")
+    })
+    $(".part02 .bingli,.part02 .bingliLis").click(function(){
+        $(parent.document).find("#contentIframe").attr("src","deptScoreDetail.html")
+    })
+}
+//判断有无某一权限
+function hasData(data){
+    let lis = JSON.parse(getCookie("codeLis"))||[]
+    // console.log(lis)
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+  }
+function resizeBox(){
+    $(".partWrap").css({
+        height:$(window).height()-38+'px'
+    })
+}
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        dateType = 1
+        getBarData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        dateType = 2
+        getBarData(2)
+    })
+}
+
+//控制台数
+function initConsole(result){
+    let url = {
+        '本月病历数':require("../images/icon6.png"),
+        '本月不合格病历-机器':require("../images/icon7.png"),
+        '本月质控数-机器':require("../images/icon10.png"),
+        '本月甲级病历-机器':require("../images/icon8.png"),
+        '本月乙级病历-机器':require("../images/icon9.png"),
+        '本年病历数':require("../images/icon6.png"),
+        '本年不合格病历-机器':require("../images/icon7.png"),
+        '本年质控数-机器':require("../images/icon10.png"),
+        '本年甲级病历-机器':require("../images/icon8.png"),
+        '本年乙级病历-机器':require("../images/icon9.png"),
+    }
+    let dom = '';
+    for(let i in result){
+        if(i.indexOf("人工")==-1){
+            let name = i.split("-")[0];
+            let num = 0;
+            if(name=='本月病历数'||name=='本年病历数'){
+                num = result[i]
+            }else{
+                num = result[name+'-人工']+result[i]
+            }
+            dom += `
+                <li class="partLi">
+                    <div class="partIn">
+                        <p class="top">${name}</p>
+                        <p class="btm clearfix">
+                        <img src="${url[i]}" alt="">
+                        <span>${num}</span>
+                        </p>
+                    </div>
+                </li>
+            `
+        }
+    }
+    $(".partAll").html(dom)
+}
+//获取科室列表
+function getOwnDept(){
+    // if(hasData('FUNC000058')){
+        post(api.getDept,{}).then((res)=>{
+            let data = res.data;
+            if(data.code == 0){
+                let result = data.data
+                renderDeptLis(result)//科室tab渲染
+                curDept = result[0].deptName
+                $(".partTitle p i,.toggleSlide p span").html(curDept).attr("title",curDept)
+                getBarData(2)//图标数据获取
+            }
+        })
+    // }
+}
+function renderDeptLis(data){
+    let str = ''
+    for(let i = 0; i < data.length;i++){
+        str += `
+            <li title="${data[i].deptName}" class="${i == 0?'li0 toggleAverge toggleSlide1':'toggleAverge toggleSlide1'}" data-dept="${data[i].deptName}">${data[i].deptName}</li>
+        `
+    }
+    $(".toggleSlide ul").html(str)
+    $(".toggleSlide ul li").click(function(){
+        let name = $(this).attr("data-dept")
+        curDept = name
+        $(this).parent().slideToggle().prev().find("span").html(name).attr("title",name)
+        $(".partTitle p i").html(name).attr("title",name)
+        personNum(datafst[name]||[])
+        setNumDetail(datasec[name]||[])
+        queList(datatrd[name]||[])
+        for(let i = 0;i < datafour[name].length;i++){
+            datafour[name][i].value = datafour[name][i].num
+        }
+        emptyCircleB(datafour[name])
+        panDetailB(datafour[name])
+        $(this).addClass("li0").siblings().removeClass("li0")
+    })
+}
+//获取图表数据
+function getBarData(type){
+    if(hasData('FUNC000054')){
+        post(api.leaveHosCountByDept,{//出院人数统计
+            "type": type||1//1月2年
+        }).then((res)=>{
+            let data = res.data;
+            if(data.code == 0){
+                let result = data.data[curDept]||[]
+                datafst = data.data
+                personNum(result)
+            }
+        })
+    }
+    if(hasData('FUNC000055')){
+        post(api.mrCountByDept,{//质控病历统计
+            "type": type||1//1月2年
+        }).then((res)=>{
+            let data = res.data
+            if(data.code == 0){
+                let result3 = data.data[curDept]||[]
+                datasec = data.data
+                setNumDetail(result3)
+            }
+        })
+    }
+    if(hasData('FUNC000056')){
+        post(api.entryCountGroupByCaseAndDept,{//各模块缺陷占比排行
+            "type": type||1//1月2年
+        }).then((res)=>{
+            let data = res.data;
+            if(data.code == 0){
+                let result1 = data.data[curDept]||[]
+                datatrd = data.data
+                queList(result1)
+            }
+        })
+    }
+    if(hasData('FUNC000057')){
+        if(hospital=="台州市立"){
+            post(api.entryCountGroupByEntryAndDept,{//条目缺陷占比
+                "type": type||1//1月2年
+            }).then((res)=>{
+                let data = res.data;
+                if(data.code == 0){
+                    let result3 = data.data[curDept]||[]
+                    for(let i = 0;i < result3.length;i++){
+                        result3[i].value = result3[i].num
+                    }
+                    datafour = data.data
+                    emptyCircleB(result3)
+                    panDetailB(result3)
+                }
+            })
+        }else{
+            post(api.entryCountGroupByEntryAndDept,{//条目缺陷占比
+                "type": type||1//1月2年
+            }).then((res)=>{
+                let data = res.data;
+                if(data.code == 0){
+                    let result3 = data.data[curDept]||[]
+                    for(let i = 0;i < result3.length;i++){
+                        result3[i].value = result3[i].num
+                    }
+                    datafour = data.data
+                    emptyCircleBc(result3)
+                    panDetailBc(result3)
+                }
+            })
+        }
+    }
+    if(hospital=="长兴医院"&&hasData("FUNC000076")){
+        post(api.getAverageScore,{//病案首页
+            "type": type||1//1月2年
+        }).then((res)=>{
+            let data = res.data;
+            if(data.code == 0){
+                let result1 = data.data['各科室质控平均分']||[]
+                let dataX1=[],dataY1=[]
+                for(let i = 0;i < result1.length;i++){
+                    dataX1.push(result1[i].name)
+                    dataY1.push(result1[i].averageValue)
+                }
+                lineChartSpecial(dataX1,dataY1)
+            }
+        })
+    }
+}
+function lineChartSpecial(dataX,dataY){
+    var myCharts = echarts.init(document.getElementById('lineChart'));
+    var lengthNum = dataX.length;
+    $(window).resize(function(){
+        myCharts.resize()
+    });
+    option = {
+        color: ['#3398DB'],
+        tooltip: {
+            trigger: 'axis',
+            position: 'right',
+            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
+                type: 'line'        // 默认为直线,可选为:'line' | 'shadow'
+            }
+        },
+        grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            containLabel: true
+        },
+        xAxis: [
+            {
+                type: 'category',
+                data: dataX,
+                axisTick: {
+                    alignWithLabel: true
+                },
+                axisLabel: {//x轴刻度
+                    textStyle: {
+                        color: '#333'
+                    },
+                    rotate:45,
+                    formatter: function (value) {
+                        //x轴的文字改为竖版显示
+                        if(value.length>7){
+                            return value.slice(0,7)+'...'
+                        }
+                        return value;
+                     }
+                },
+                axisLine: {//x轴
+                    lineStyle:{
+                        color:'#AAAAAA'
+                    }
+                }
+            }
+        ],
+        yAxis: [
+            {
+                type: 'value',
+                axisLine: {//y轴
+                    show: false
+                },
+                axisTick: {
+                    show: false
+                },
+                axisLabel: {//y轴刻度
+                    textStyle: {
+                        color: '#333333'
+                    }
+                },
+                splitLine:{//分割线
+                    lineStyle:{
+                        color:'#EFF3FC'
+                    }
+                }
+            }
+            
+        ],
+        title:[{
+            text: '合格率',
+            top: 15,
+            left: 10,
+            textStyle: {
+                fontSize: 14,
+                color:'#666666',
+                fontWeight: 400
+            }
+        }],
+        series: [
+            {
+                name: '质控平均分',
+                type: 'bar',
+                barWidth: '23%',
+                data: dataY
+            }
+        ]
+    };
+    myCharts.setOption(option);
+}
+//part01
+function personNum(data){
+    $(".personNum").html("总人数:"+data['总人数'])
+    $(".died").html(data['死亡人数'])
+    $(".newborn").html(data['新生儿人数'])
+    $(".patientNum").html(data['手术病人数'])
+}
+//part02
+function setNumDetail(data){
+    // console.log(data,2222222222)
+    if(data.length == 0){
+        data = [
+            {
+                "id":null,
+                "name":"累计质控病历数",
+                "totleNum":0,
+                "num":0,
+                "percent":null,
+                "percentStr":null
+            },
+            {
+                "id":null,
+                "name":"甲级病历",
+                "totleNum":10,
+                "num":0,
+                "percent":0,
+                "percentStr":"0.00%"
+            },
+            {
+                "id":null,
+                "name":"乙级病历",
+                "totleNum":10,
+                "num":0,
+                "percent":0,
+                "percentStr":"0.00%"
+            },
+            {
+                "id":null,
+                "name":"丙级病历",
+                "totleNum":10,
+                "num":0,
+                "percent":0,
+                "percentStr":"0.00%"
+            }
+        ]
+    }
+    let str = ''
+    for(let i = 0;i < data.length;i++){
+        str += `
+            <li class="${i==0?'fst':i == data.length-1?' four':''}">
+            <p class="numShow">${data[i].num}</p>
+            <p class="explainNum">${data[i].name}</p>
+            </li>
+        `
+        if(data[i].name == '甲级病历'){
+            let tmp = []
+            data[i].value = data[i].num
+            tmp.push(data[i])
+            tmp.push({percentStr:(1-data[i].percent)*100+'%',value:data[i].totleNum - data[i].num})
+            part02pan(tmp,'fen01')
+        }
+        if(data[i].name == '乙级病历'){
+            let tmp = []
+            data[i].value = data[i].num
+            tmp.push(data[i])
+            tmp.push({percentStr:(1-data[i].percent)*100+'%',value:data[i].totleNum - data[i].num})
+            part02pan(tmp,'fen02')
+        }
+        if(data[i].name == '丙级病历'){
+            let tmp = []
+            data[i].value = data[i].num
+            tmp.push(data[i])
+            tmp.push({percentStr:(1-data[i].percent)*100+'%',value:data[i].totleNum - data[i].num})
+            part02pan(tmp,'fen03')
+        }
+    }
+    $('.bingli').html(str)
+}
+//part02pan
+function part02pan(data,dom){
+    // console.log(data,33333)
+    dom = echarts.init(document.getElementById(dom));
+    $(window).resize(function(){
+        dom.resize()
+    });
+    let bgColor = '#fff';
+    let title = '总量';
+    let color = ['#37CBCB','#dedede'];
+    let echartData = data;
+    option = {
+        backgroundColor: bgColor,
+        color: color,
+        title: [{
+            text:'{val|' + echartData[0].percentStr + '}',
+            top: 'center',
+            left: 'center',
+            textStyle: {
+                rich: {
+                    val: {
+                        fontSize: 14,
+                        color: '#333',
+                        fontWeight: 'bold',
+                        padding: [10, 0]
+                    },
+                    name: {
+                        fontSize: 12,
+                        fontWeight: 'normal',
+                        color: '#777',
+                    }
+                }
+            }
+        }],
+        series: [{
+            name: '',
+            type: 'pie',
+            radius: ['70%', '90%'],
+            data: echartData,
+            hoverAnimation:false,
+            label: {
+                normal: {
+                    show:false,
+                }
+            },
+        }]
+    };      
+    dom.setOption(option);
+}
+//柱状图住院日期
+function emptyCircleB(data){
+    var myChart = echarts.init(document.getElementById('emptyCircleB'));
+    $(window).resize(function(){
+        myChart.resize()
+    });
+    let bgColor = '#fff';
+    let title = '总量';
+    let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
+    let echartData = data;
+    let total = 0;
+    for(let i = 0;i < echartData.length;i++){
+        total += echartData[i].num
+    }
+    option = {
+        backgroundColor: bgColor,
+        color: color,
+        title: [{
+            text: data.length>0?'{val|' + total + '}\n{name|' + title + '}':'',
+            top: 'center',
+            left: 'center',
+            textStyle: {
+                rich: {
+                    val: {
+                        fontSize: 24,
+                        color: '#333',
+                        fontWeight: 'bold',
+                        padding: [10, 0]
+                    },
+                    name: {
+                        fontSize: 12,
+                        fontWeight: 'normal',
+                        color: '#777',
+                    }
+                }
+            }
+        }],
+        tooltip: {
+            trigger: 'item',
+            position: 'right',
+            // formatter: '{b} : {c}  ({d}%)',
+            formatter:function(item){
+                const {name, num, percentStr} = item.data
+                return `${name} : ${num} (${percentStr})`
+            }
+        },
+        series: [{
+            name: '',
+            type: 'pie',
+            radius: ['70%', '90%'],
+            data: echartData,
+            hoverAnimation:true,
+            hoverOffset:5,
+            itemStyle: {
+                normal: {
+                    borderColor: bgColor,
+                    borderWidth: 2
+                }
+            },
+            labelLine: {
+                normal: {
+                    length: 20,
+                    length2: 120,
+                    lineStyle: {
+                        color: '#e6e6e6'
+                    }
+                }
+            },
+            label: {
+                normal: {
+                    show:false,
+                    formatter: params => {
+                        return params.name == 'A类'?params.name:''
+                    },
+                    padding: [0 , -100, 25, -100],
+                    rich: {
+                        icon: {
+                            fontSize: 16
+                        },
+                        name: {
+                            fontSize: 14,
+                            padding: [0, 10, 0, 4],
+                            color: '#666666'
+                        },
+                        value: {
+                            fontSize: 18,
+                            fontWeight: 'bold',
+                            color: '#333333'
+                        }
+                    }
+                }
+            },
+        }]
+    };      
+    myChart.setOption(option);
+}
+function emptyCircleBc(data){
+    var myChart = echarts.init(document.getElementById('emptyCircleBc'));
+    $(window).resize(function(){
+        myChart.resize()
+    });
+    let bgColor = '#fff';
+    let title = '总量';
+    let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
+    let echartData = data;
+    let total = 0;
+    for(let i = 0;i < echartData.length;i++){
+        total += echartData[i].num
+    }
+    option = {
+        backgroundColor: bgColor,
+        color: color,
+        title: [{
+            text: data.length>0?'{val|' + total + '}\n{name|' + title + '}':'',
+            top: 'center',
+            left: 'center',
+            textStyle: {
+                rich: {
+                    val: {
+                        fontSize: 24,
+                        color: '#333',
+                        fontWeight: 'bold',
+                        padding: [10, 0]
+                    },
+                    name: {
+                        fontSize: 12,
+                        fontWeight: 'normal',
+                        color: '#777',
+                    }
+                }
+            }
+        }],
+        tooltip: {
+            trigger: 'item',
+            position: 'right',
+            // formatter: '{b} : {c}  ({d}%)',
+            formatter:function(item){
+                const {name, num, percentStr} = item.data
+                return `${name} : ${num} (${percentStr})`
+            }
+        },
+        series: [{
+            name: '',
+            type: 'pie',
+            radius: ['70%', '90%'],
+            data: echartData,
+            hoverAnimation:true,
+            hoverOffset:5,
+            itemStyle: {
+                normal: {
+                    borderColor: bgColor,
+                    borderWidth: 2
+                }
+            },
+            labelLine: {
+                normal: {
+                    length: 20,
+                    length2: 120,
+                    lineStyle: {
+                        color: '#e6e6e6'
+                    }
+                }
+            },
+            label: {
+                normal: {
+                    show:false,
+                    formatter: params => {
+                        return params.name == 'A类'?params.name:''
+                    },
+                    padding: [0 , -100, 25, -100],
+                    rich: {
+                        icon: {
+                            fontSize: 16
+                        },
+                        name: {
+                            fontSize: 14,
+                            padding: [0, 10, 0, 4],
+                            color: '#666666'
+                        },
+                        value: {
+                            fontSize: 18,
+                            fontWeight: 'bold',
+                            color: '#333333'
+                        }
+                    }
+                }
+            },
+        }]
+    };      
+    myChart.setOption(option);
+}
+//缺陷列表渲染
+function queList(data){
+    let strAll = '',tmp = `mm
+        <tr class="thead">
+        <td class="td01">排名</td>
+        <td class="td02">缺陷详情</td>
+        <td class="td03">数量</td>
+        <td class="td04">占比</td>
+        </tr>`
+    for(let i = 0;i < data.length;i++){
+        strAll += `
+            <tr>
+                <td style="text-align:center;"><i style="background:${i < 3?'#bea571':'#eff3fc'};color:${i < 3?'#fff':'#999'};">${i+1}</i></td>
+                <td>${data[i].name}</td>
+                <td>${data[i].num}</td>
+                <td>${data[i].percentStr}</td>
+            </tr>
+        `
+    }
+    $(".qtable").html(tmp+strAll)
+}
+//饼图列表注释渲染
+function panDetailB(data){
+    let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
+    let strAll = '';
+    for(let i = 0;i < data.length;i++){
+        strAll += `
+            <tr class="explainLi">
+                <td class="deptName" title="${data[i].name}">
+                    <p><i class="tip" style="background-color:${color[i]}"></i>${data[i].name}</p>
+                </td>
+                <td class="deptNum">${data[i].num}</td>
+                <td class="percent">(${data[i].percentStr})</td>
+            </tr>
+        `
+    }
+    $(".explainPanB table").html(strAll);
+    $(".explainPan").css({
+        marginTop:-($(".explainPan").height()/2-20)+'px'
+    })
+}
+function panDetailBc(data){
+    let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
+    let strAll = '';
+    for(let i = 0;i < data.length;i++){
+        strAll += `
+            <tr class="explainLi">
+                <td class="deptName" title="${data[i].name}">
+                    <p><i class="tip" style="background-color:${color[i]}"></i>${data[i].name}</p>
+                </td>
+                <td class="deptNum">${data[i].num}</td>
+                <td class="percent">(${data[i].percentStr})</td>
+            </tr>
+        `
+    }
+    $(".explainPanBc table").html(strAll);
+    $(".explainPan").css({
+        marginTop:-($(".explainPanc").height()/2-20)+'px'
+    })
+}
+//时间获取
+function getTimeDetail(){
+    const d = new Date();
+    const days = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
+    let sec = d.getSeconds()
+    let min = d.getMinutes()
+    let hour = d.getHours()
+    let str = `${d.getFullYear()}年${d.getMonth()+1}月${d.getDate()}日 / ${days[d.getDay()]} / ${hour>9?hour:'0'+hour}:${min>9?min:'0'+min}:${sec>9?sec:'0'+sec}`
+    $(".dateDetail").html(str)
+}
+
+

+ 560 - 0
src/js/deptScoreDetail.js

@@ -0,0 +1,560 @@
+const $ = require('jquery');
+require("../css/deptScoreDetail.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+let deptList = JSON.parse(getCookie("deptList"))||[]
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+//科室处理
+getDeptList()
+function getDeptList(){
+    let str = ``
+    if(deptList.length<=0)return
+    $(".deptScoreDetail .selectDept ").attr("data-id",deptList[0].deptName).find("i").html(deptList[0].deptName)
+    deptIdTemp = deptList[0].deptName
+    deptId = deptList[0].deptName
+    for(let i = 0;i < deptList.length;i++){
+        let tmp = deptList[i]
+        str += `<li class="deptItem ellipsis" title="${tmp.deptName}" data-id="${tmp.deptName}" data-name="${tmp.deptName}">${tmp.deptName}</li>`
+    }
+    $(".deptScoreDetail .filterDropList").html(str)
+}
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+
+function getTabData(activePage){
+    const param = {
+        "asc": "",
+        "deptName": deptId||"",
+        "desc": "",
+        "level": "",
+        "name": behospitalCode||"",
+        "type": statisticsType||2
+    }
+    post(api.levelStatisticsByDept,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(data,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.deptId || "-"}</td>
+                <td >${item.doctorName || "-"}</td>
+                <td class="goHomeDetail" data-doc="${item.doctorName || ""}">${item.entryNum || "-"}</td>
+                <td >${item.averageValue || "-"}</td>
+                <td >${item.mrNum || "-"}</td>
+                <td >${item.firstLevelNum || "-"}</td>
+                <td >${item.secondLevelNum || "-"}</td>
+                <td >${item.thirdLevelNum || "-"}</td>
+                <td >${item.firstLevelPercentStr || "-"}</td>
+                <td >${item.secondLevelPercentStr || "-"}</td>
+                <td >${item.thirdLevelPercentStr || "-"}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindScoreDetail(hisId)
+    $(".goHomeDetail").click(function(){
+        let docName = $(this).attr("data-doc")
+        $(parent.document).find("#contentIframe").attr("src","quexianDetail.html?from=2&deptName="+deptIdTemp+"&docName="+docName)
+    })
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 544 - 0
src/js/deptScoreDetailControl.js

@@ -0,0 +1,544 @@
+const $ = require('jquery');
+require("../css/deptScoreDetailControl.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        "asc": "",
+        "desc": "",
+        "name": behospitalCode||"",
+        "level": deptId||'',
+        "type": statisticsType||2, //1-本月,2-本年
+    }
+    post(api.levelStatistics,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(data,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.deptId || "-"}</td>
+                <td >${item.deptName || "-"}</td>
+                <td class="goHomeDetail" data-dept="${item.deptName || ""}">${item.entryNum || "-"}</td>
+                <td >${item.averageValue || "-"}</td>
+                <td >${item.mrNum || "-"}</td>
+                <td >${item.firstLevelNum || "-"}</td>
+                <td >${item.secondLevelNum || "-"}</td>
+                <td >${item.thirdLevelNum || "-"}</td>
+                <td >${item.firstLevelPercentStr || "-"}</td>
+                <td >${item.secondLevelPercentStr || "-"}</td>
+                <td >${item.thirdLevelPercentStr || "-"}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindScoreDetail(hisId)
+    $(".goHomeDetail").click(function(){
+        let deptName = $(this).attr("data-dept")
+        $(parent.document).find("#contentIframe").attr("src","quexianDetailControl.html?deptName="+deptName+"&from=2")
+    })
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 48 - 4
src/js/index.js

@@ -3,10 +3,12 @@ const $ = require('jquery');
 require('jquery-templates');
 const md5 = require('js-md5');
 require("./modal.js")
-const {api,post,pageMap,delCookie,setCookie,getCookie} = require('./utils.js');
+const {api} = require('./api.js')
+const {post,pageMap,delCookie,setCookie,getCookie} = require('./utils.js');
 let userInfo={};
 $(function(){
   getMenu();
+  getOwnDept();
   //菜单展开收起
   sureChangeWord()
   $(".main").css({
@@ -21,10 +23,11 @@ $(function(){
   $("#changeWord").css("opacity",hasData('FUNC000002')?'1':'0.5').hover(function(){
     $(this).css("color","#777777")
   })
+  $("#contentIframe").attr("src",hasData('YH-KZT')?'console.html':hasData('YH-KZTKS')?'deptConsole.html':'console.html');
 });
 //判断有无某一权限
 function hasData(data){
-  let lis = JSON.parse(getCookie("codeLis"))
+  let lis = JSON.parse(getCookie("codeLis"))||[]
   if(lis.indexOf(data)>-1){//有权限
       return true
   }
@@ -38,10 +41,16 @@ window.userActionHide = userActionHide
 function initMenu(data,userInfo){
   //菜单数据填充
   $("#menuTmpl").tmpl(data).appendTo(".menu ul");
+  $("#miniMenuTmpl").tmpl(data).appendTo(".menu-mini ul");
   //用户数据填充
   $("#userName").text(userInfo.linkman);
+  //初始菜单选中
+  $(".menu .page").eq(0).addClass("active");
+  // if($(".menu .page").eq(0).is(".YH-KZT")||$(".menu .page").eq(0).is(".YH-KZTKS")||$(".menu .page").eq(1).is(".YH-KZTKS")){
+  if($(".menu .page").eq(0).is(".YH-KZT")){
+    $(".container").addClass("console-cont");
+  }
   //菜单收起展开
-  $(".menu .page").eq(0).addClass("active")
   $(".list-1").on("click",function(){
     // $(".list-1 .slide-up").removeClass('slide-up');
     // $(this).toggleClass('slide-up');
@@ -53,8 +62,23 @@ function initMenu(data,userInfo){
       $(this).removeClass("list-1-show")
     }
     $(this).find("ul").slideToggle();
-    
   });
+//收起菜单
+  $(".slide-hide").click(function(){
+    $(".menu").animate({"width":"45px"},function(){
+      $(this).hide();
+      $(".menu-mini").show();
+    });
+    $(".main").animate({"margin-left":"45px"});
+  });
+  //展开菜单
+  $(".slide-show").click(function(){
+    $(".menu-mini").hide();
+    $(".menu").show().animate({"width":"205px"},function(){
+    });
+    $(".main").animate({"margin-left":"205px"});
+  });
+
   $(".list-1 li").on("click",function(e){
     e.stopPropagation();
   });
@@ -67,9 +91,29 @@ function initMenu(data,userInfo){
     if(code === 'YH-BLZK-ZKPFGR'){
       url += `?doctorName=${userInfo.linkman}`
     }
+    // if(code === 'YH-KZT'||code === 'YH-KZTKS'){
+    if(code === 'YH-KZT'){
+      $(".container").addClass("console-cont");
+    }else{
+      $(".container").removeClass("console-cont");
+    }
     $("#contentIframe").attr("src",url);
   });
 }
+
+//获取科室列表
+function getOwnDept(){
+  // if(hasData('FUNC000058')){
+      post(api.getDept,{}).then((res)=>{
+          let data = res.data;
+          if(data.code == 0){
+              let result = data.data
+              curDept = result[0].deptName
+              setCookie("deptList",JSON.stringify(result))
+          }
+      })
+  // }
+}
 function getMenu(){
   post(api.getMenu).then(function(res){
     if(res.data.code==='0'){

+ 7 - 5
src/js/itemManager.js

@@ -12,14 +12,16 @@ const arrowLeft= require("./../images/arrow_left.png")
 const arrowRight = require("./../images/arrow_right.png")
 
 
-let casesId="", name="", isReject ="", isUsed ="",casesIdTemp="", nameTemp="", isRejectTemp ="", isUsedTemp =""
+let casesId="", name="", isReject ="", isUsed ="",casesIdTemp="", nameTemp="", isRejectTemp ="", isUsedTemp ="",size = 15
 $(".selectModuleType").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
 $(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
 $(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
-
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
 //判断有无某一权限
 function hasData(data){
-    let lis = JSON.parse(getCookie("codeLis"))
+    let lis = JSON.parse(getCookie("codeLis"))||[]
     if(lis.indexOf(data)>-1){//有权限
         return true
     }
@@ -33,7 +35,7 @@ function getTabData(activePage){
         name: name, //条目名
         isReject: isReject, //1-单项否决 0-非
         isUsed: isUsed, //0-未启用 1-启用
-        size: 15
+        size: size
     }
     post(api.getQcCasesEntryAll,param).then(res =>{
         if(res.data.code == '0'){
@@ -117,7 +119,7 @@ function renderTab(data,activePage){
         const item = data[i]
         str += `
             <tr data-id=${item.id} data-index=${i}>
-                <td  class="textCenter">${(activePage-1)*10 + i+1}</td>
+                <td  class="textCenter">${(activePage-1)*size + i+1}</td>
                 <td>${item.casesName}</td>
                 <td>${item.name}</td>
                 <td>${item.msg}</td>

+ 530 - 0
src/js/jiaji.js

@@ -0,0 +1,530 @@
+const $ = require('jquery');
+require("../css/jiaji.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        size: 15,
+        name: behospitalCode||"",
+        type: statisticsType||2, //1-本月,2-本年
+        dateType: level||"",//(3-上月,4-去年本月,5-去年(必填))
+    }
+    post(api.levelPercentGroupByDeptPage,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(tabList,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.deptName || "-"}</td>
+                <td >${item.firstPercent || "-"}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str)
+    bindScoreDetail(hisId)
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 9 - 1
src/js/login.js

@@ -2,6 +2,8 @@ const $ = require('jquery');
 require("../css/reset.less")
 require("../css/login.less")
 require("./modal.js")
+const {api} = require('./api.js')
+
 const {post,setCookie,delCookie} = require('../js/utils.js');
 const md5 = require('js-md5');
 $(function(){
@@ -17,6 +19,12 @@ $(function(){
   $("#password").focus(function(){
     $(this).attr("type","password")
   })
+  $(".iptWrap input").focus(function(){
+    $(this).parent().addClass('inputFocus')
+  })
+  $(".iptWrap input").blur(function(){
+    $(this).parent().removeClass('inputFocus')
+  })
   $("body").on('input','#username,#password',function(){
     if($(this).val().trim() != ''){
       $(".login .waring").html('')
@@ -35,7 +43,7 @@ function sureLogin(){
     return
   }
   $.alerModal({type:"loading"});
-  post('/sys/user/getJwt',{
+  post(api.getJwt,{
     username:username,
     password:md5(password)
   }).then((res)=>{

+ 1 - 1
src/js/modal.js

@@ -49,9 +49,9 @@ const jQuery = require('jquery');
             top:$(".modaltip").height()/2+'px'
         })
         if(ops.isFather){
+            //console.log('bbbbbbb')
            ops.fatherWrapper.append(box)
         } else{
-            console.log('bbbbbbb')
             $("body").append(box)
         }
         if(ops.type == 'tip'){

+ 17 - 35
src/js/moduleManager.js

@@ -7,12 +7,17 @@ require('./modal.js');
 // const  layui = require('layui-src');
 const {api} = require('./api.js')
 const {post,getCookie} = require('./utils.js')
-$(".tableWrapper").css({
-    height:$(window).height()-180+'px'
-})
+function setTbaleInfoHei(){
+ 
+    $(".tableInfo").css({
+        height:$(window).height()-180+'px'
+    })
+}
+setTbaleInfoHei()
+
 //判断有无某一权限
 function hasData(data){
-    let lis = JSON.parse(getCookie("codeLis"))
+    let lis = JSON.parse(getCookie("codeLis"))||[]
     if(lis.indexOf(data)>-1){//有权限
         return true
     }
@@ -30,35 +35,6 @@ function getTabData(){
     })
 }
 getTabData()
-// const data = [
-//     {
-//         name: '入院记录',
-//         score: 10
-//     },
-//     {
-//         name: '入院记录',
-//         score: 10
-//     },
-//     {
-//         name: '入院记录',
-//         score: 10
-//     },{
-//         name: '入院记录',
-//         score: 10
-//     }
-//     ,{
-//         name: '入院记录',
-//         score: 10
-//     }
-//     ,{
-//         name: '入院记录',
-//         score: 10
-//     },
-//     {
-//         name: '入院记录',
-//         score: 10
-//     }
-// ]
 
 function renderTab(){
     let  str = ``;
@@ -81,7 +57,12 @@ function renderTab(){
     //     <td class="totalSum"></td>
     // </tr>
     // `
-    $('table tbody').html(str)
+    $('.tableInfo table').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    const tableInfoBox =  $(".tableInfo").height()
+    const tableInfoHei =  $(".tableInfo table").height()
+    if(tableInfoHei > tableInfoBox){
+        $(".tableTitle").css("paddingRight", 15+'px')
+    }
     // bindInput()
     bindModuleOpera()
     getTotalSum()
@@ -93,13 +74,14 @@ function bindModuleOpera(){
         return
     }
     $(".moduleOperaItem").on("click", function(e){
-        const index = $(this).parent().attr('data-index') 
+        const index = $(this).parent().attr('data-index')
         const item = data[index]
         midifyMsgBox(item)
     })
 }
 function getTotalSum(){
     let sum = 0
+    console.log('data', data)
     for(let i = 0; i < data.length; i++){
         if(data[i].score){
             sum += Number(data[i].score)

+ 460 - 0
src/js/mukuai.js

@@ -0,0 +1,460 @@
+const $ = require('jquery');
+require("../css/mukuai.less");
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie,getUrlArgObjectNew} = require('./utils.js')
+const switchIconOpen = require("./../images/btn_open.png")
+const switchIconClose = require("./../images/btn_close.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+
+let casesId="", name="", isReject ="2", isUsed ="",casesIdTemp="", nameTemp="", isRejectTemp ="2", isUsedTemp ="",from="",deptIdTemp="",deptItemId="",deptId=""
+$(".selectModuleType").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let deptList = JSON.parse(getCookie("deptList"))||[]
+$(function(){
+    dateChange()
+    let srcUrl = $("#contentIframe",parent.document).attr("src")
+    isReject = 2||getUrlArgObjectNew("dateType",srcUrl)
+    // deptName = getUrlArgObjectNew("deptName",srcUrl)||""
+    from = getUrlArgObjectNew("from",srcUrl)||""
+    getTabData(1)//条目缺陷
+    
+    $(".partTitle a").click(function(){
+        //初始菜单选中
+        $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+        $(".container",parent.document).addClass("console-cont");
+    })
+    $(".abnormalClear").click(function(){
+        window.location.reload()
+    })
+})
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $(document).on("click",'.deptItem',function(){
+        const deptItemName = $(this).attr("data-name")||''
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+//科室处理
+getDeptList()
+function getDeptList(){
+    let str = ``
+    if(deptList.length<=0)return
+    $(".mukuai .selectDept ").attr("data-id",deptList[0].deptName).find("i").html(deptList[0].deptName)
+    for(let i = 0;i < deptList.length;i++){
+        let tmp = deptList[i]
+        str += `<li class="deptItem ellipsis" title="${tmp.deptName}" data-id="${tmp.deptName}" data-name="${tmp.deptName}">${tmp.deptName}</li>`
+    }
+    $(".mukuai .filterDropList").html(str)
+}
+//判断有无某一权限
+function hasData(data){
+    let lis = JSON.parse(getCookie("codeLis"))||[]
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+  }
+  //所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        isReject = 1
+        isRejectTemp = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        isReject = 2
+        isRejectTemp = 2
+        getTabData(1)
+    })
+}
+//获取表格数据
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        type: isReject,
+        name: name, //条目名
+        deptName: deptId||deptList.length>0&&deptList[0].deptName, //科室名
+        size: 15
+    }
+    post(from == 1?api.entryCountGroupByCasePage:api.entryCountGroupByCaseAndDeptPage,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data.records
+            const totalPage = res.data.data.pages
+            const totalNum = res.data.data.total
+            renderTab(data,activePage)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{}
+    }).catch((e) =>{})
+}
+$(".moduleItemInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".filter").on("click", function(e){
+    casesId=casesIdTemp, name=nameTemp, isReject =isRejectTemp, isUsed =isUsedTemp,deptId = deptIdTemp
+    getTabData(1)
+})
+$(".filterclear").on("click", function(e){
+    nameTemp = ""
+    $(".moduleItemInp").val("")
+})
+$('.selectModuleType').on("click", function(e){
+    e.stopPropagation()
+    $(".rejectList ").css("display","none")
+    $(".usedList ").css("display", "none")
+    $(".selectReject .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+    const showList =  $(".moduleTypeList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".moduleTypeList ").css("display","block")
+        $(".selectModuleType .arrow").attr("src",iconUp)
+    }else{
+        $(".moduleTypeList ").css("display", "none")
+        $(".selectModuleType .arrow").attr("src",iconDown)
+    }
+})
+    
+$('.selectReject').on("click", function(e){
+    e.stopPropagation()
+    $(".moduleTypeList ").css("display", "none")
+    $(".usedList ").css("display", "none")
+    $(".selectModuleType .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+    const showList =  $(".rejectList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".rejectList ").css("display","block")
+        $(".selectUsed .arrow").attr("src",iconUp)
+    }else{
+        $(".rejectList ").css("display", "none")
+        $(".selectUsed .arrow").attr("src",iconDown)
+    }
+})
+$('.selectUsed').on("click", function(e){
+    e.stopPropagation()
+    $(".moduleTypeList ").css("display", "none")
+    $(".rejectList ").css("display","none")
+    $(".selectModuleType .arrow").attr("src",iconDown)
+    $(".selectReject .arrow").attr("src",iconDown)
+    const showList =  $(".usedList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".usedList ").css("display","block")
+        $(".selectUsed .arrow").attr("src",iconUp)
+    }else{
+        $(".usedList ").css("display", "none")
+        $(".selectUsed .arrow").attr("src",iconDown)
+    }
+})
+// bindRejectSelect()
+// bindUsedSelect()
+// getmoduleTypeList()
+function renderTab(data,activePage){
+    let str = ``;
+    const cls = hasData("FUNC000007")?"editItem":"editItemDis";
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr data-id=${item.id} data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.name}</td>
+                <td  class="textCenter">${item.percentStr}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindEdit(data,activePage)
+}
+
+function bindEdit(data,activePage){
+    if(!hasData('FUNC000007')){
+        return
+    }
+    $('.editItem').click(function(e){
+        const index = $(this).parent().attr('data-index') 
+        editItem(data[index],activePage)
+    })
+}
+
+//修改
+function editItem(item,activePage){
+    const itemCpoy = JSON.parse(JSON.stringify(item))
+    $('.pop-box').remove()
+    $('.container').append('<div class="pop-box"></div>')
+    const str = `
+        <div class="itemMsgBox">
+            <div class="mask"></div>
+            <div class="itemMsgContent">
+                <p class="itemMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgContentBox">
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">模块名称:</span> <span class="itemInfoRight">${itemCpoy.casesName}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">条目名称:</span> <span class="itemInfoRight"> ${itemCpoy.name}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">提示信息:</span> <span class="itemInfoRight"> <input class="itemTipMsg" value="${itemCpoy.msg}" /></span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">
+                        分值:
+                        </span> <span class="itemInfoRight"> 
+                            <input class="itemScore" type="number" min="0" value=${itemCpoy.score} />
+                        </span>
+                        <p class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</p>
+                    </div>
+                 
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">单项否决:</span><span class="itemInfoRight itemReject">${item.isReject == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo">  是</span>`:`<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">启用:</span><span class=" temInfoRight itemUsed">${item.isUsed == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo"> 是</span>`:`<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
+                </div>
+                
+                <div class="confirmEditBox"><span class="confirmEdit">保存</span></div>
+            </div>
+        </div>
+       
+    `
+    $("#mainBox", parent.document).append(str)
+    $("#mainBox .itemMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .itemMsgBox", parent.document).remove()
+    })
+    $("#mainBox .itemMsgBox .itemTipMsg", parent.document).on("input", function(e){
+        const val = $(this).val().trim()
+        itemCpoy.msg = val
+    })
+    $("#mainBox .itemMsgBox .itemScore", parent.document).on("keypress", function(e){
+        return (/[0-9\.]/.test(String.fromCharCode(e.keyCode)))
+    })
+    $("#mainBox .itemMsgBox .itemScore", parent.document).on("input", function(e){
+        const val = $(this).val()
+        itemCpoy.score = val
+    })
+    $("#mainBox .itemMsgBox .itemReject", parent.document).on("click", function(e){
+        itemCpoy.isReject = itemCpoy.isReject == 1 ? 0 : 1
+        $('#mainBox .itemMsgBox', parent.document).remove()
+        editItem(itemCpoy,activePage)
+    })
+    $("#mainBox .itemMsgBox .itemUsed", parent.document).on("click", function(e){
+        itemCpoy.isUsed = itemCpoy.isUsed == 1 ? 0 : 1
+        $('#mainBox .itemMsgBox', parent.document).remove()
+        editItem(itemCpoy,activePage)
+    })
+    
+    $("#mainBox .itemMsgBox .confirmEdit", parent.document).on("click", function(){
+        var reg = new RegExp(/^\d+(\.\d)?$/);
+        if(reg.test(itemCpoy.score)){
+            // console.log('itemCopy', itemCpoy)
+            if(!itemCpoy.msg.trim()){
+                $.alerModal({"message":"提示信息不能为空~",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+                return 
+            }
+            
+            saveEdit(itemCpoy,activePage)
+            $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display","none")
+            $('#mainBox .itemMsgBox', parent.document).remove()
+            return 
+        }else{
+            $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display","block")
+            
+            return
+        }
+      
+    })
+   
+    
+}
+
+//保存修改
+function saveEdit(item,activePage){
+    const param = {
+        id: item.id,
+        isReject: item.isReject,
+        isUsed: item.isUsed,
+        msg: item.msg,
+        score: item.score
+    }
+
+    post(api.updataQcCasesEntry,param).then(res =>{
+        if(res.data.code == '0'){
+            // const data = res.data.data
+            $.alerModal({"message":"修改成功",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            getTabData(activePage)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+//获取模块类型
+function getmoduleTypeList(){
+    post(api.getQcCasesAll).then(res =>{
+        if(res.data.code == '0'){
+           const  moduleTypeList = res.data.data
+           renderModuleTypeList(moduleTypeList)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+
+function renderModuleTypeList(moduleTypeList){
+    let str = `<li class="modeTypeItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < moduleTypeList.length; i++){
+        str += `<li class="modeTypeItem ellipsis" title=${moduleTypeList[i].name} data-id=${moduleTypeList[i].id} data-name=${moduleTypeList[i].name}> ${moduleTypeList[i].name}</li>`
+    }
+    $('.moduleTypeList').html(str)
+    bindModuleTypeSelect()
+}
+
+//模块类型选择
+function bindModuleTypeSelect(){
+    $('.modeTypeItem').on("click",function(){
+        const modeTypeItemName = $(this).attr("data-name")
+        const modeTypeItemId = $(this).attr("data-id")
+        casesIdTemp =modeTypeItemId
+        $('.selectModuleType').html(modeTypeItemName).attr("title",modeTypeItemName)
+        $(".selectModuleType").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".moduleTypeList ").css("display", "none")
+    })
+}
+//单项否决选择
+function bindRejectSelect(){
+    $('.rejectItem').on("click",function(){
+        const rejectItemName = $(this).attr("data-name")
+        const rejectItemId = $(this).attr("data-id")
+        isRejectTemp=rejectItemId
+        $('.selectReject').html(rejectItemName)
+        $(".rejectList ").css("display", "none")
+        $(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+    })
+}
+//是否启用选择
+function bindUsedSelect(){
+    $('.usedItem').on("click",function(){
+        const usedItemName = $(this).attr("data-name")
+        const usedItemItemId = $(this).attr("data-id")
+        isUsedTemp =usedItemItemId
+        $('.selectUsed').html(usedItemName)
+        $(".usedList").css("display", "none")
+        $(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+
+
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".moduleTypeList ").css("display", "none")
+    $(".rejectList ").css("display","none")
+    $(".usedList ").css("display", "none")
+    $(".selectModuleType .arrow").attr("src",iconDown)
+    $(".selectReject .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+})

+ 459 - 0
src/js/mukuaiControl.js

@@ -0,0 +1,459 @@
+const $ = require('jquery');
+require("../css/mukuai.less");
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie,getUrlArgObjectNew} = require('./utils.js')
+const switchIconOpen = require("./../images/btn_open.png")
+const switchIconClose = require("./../images/btn_close.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+
+let casesId="", name="", isReject ="2", isUsed ="",casesIdTemp="", nameTemp="", isRejectTemp ="2", isUsedTemp ="",from="",deptIdTemp="",deptItemId="",deptId=""
+$(".selectModuleType").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let deptList = JSON.parse(getCookie("deptList"))||[]
+$(function(){
+    dateChange()
+    let srcUrl = $("#contentIframe",parent.document).attr("src")
+    // deptName = getUrlArgObjectNew("deptName",srcUrl)||""
+    from = getUrlArgObjectNew("from",srcUrl)||""
+    getTabData(1)//条目缺陷
+    
+    $(".partTitle a").click(function(){
+        //初始菜单选中
+        $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+        $(".container",parent.document).addClass("console-cont");
+    })
+    $(".abnormalClear").click(function(){
+        window.location.reload()
+    })
+})
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $(document).on("click",'.deptItem',function(){
+        const deptItemName = $(this).attr("data-name")||''
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+//科室处理
+getDeptList()
+function getDeptList(){
+    let str = ``
+    if(deptList.length<=0)return
+    // $(".mukuai .selectDept ").attr("data-id",deptList[0].deptName).find("i").html(deptList[0].deptName)
+    for(let i = 0;i < deptList.length;i++){
+        let tmp = deptList[i]
+        str += `<li class="deptItem ellipsis" title="${tmp.deptName}" data-id="${tmp.deptName}" data-name="${tmp.deptName}">${tmp.deptName}</li>`
+    }
+    $(".mukuai .filterDropList").html(str)
+}
+//判断有无某一权限
+function hasData(data){
+    let lis = JSON.parse(getCookie("codeLis"))||[]
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+  }
+  //所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        isReject = 1
+        isRejectTemp = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        isReject = 2
+        isRejectTemp = 2
+        getTabData(1)
+    })
+}
+//获取表格数据
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        type: isReject,
+        name: name, //条目名
+        deptName: deptId, //科室名
+        size: 15
+    }
+    post(from == 1?api.entryCountGroupByCasePage:api.entryCountGroupByCaseAndDeptPage,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data.records
+            const totalPage = res.data.data.pages
+            const totalNum = res.data.data.total
+            renderTab(data,activePage)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{}
+    }).catch((e) =>{})
+}
+$(".moduleItemInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".filter").on("click", function(e){
+    casesId=casesIdTemp, name=nameTemp, isReject =isRejectTemp, isUsed =isUsedTemp,deptId = deptIdTemp
+    getTabData(1)
+})
+$(".filterclear").on("click", function(e){
+    nameTemp = ""
+    $(".moduleItemInp").val("")
+})
+$('.selectModuleType').on("click", function(e){
+    e.stopPropagation()
+    $(".rejectList ").css("display","none")
+    $(".usedList ").css("display", "none")
+    $(".selectReject .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+    const showList =  $(".moduleTypeList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".moduleTypeList ").css("display","block")
+        $(".selectModuleType .arrow").attr("src",iconUp)
+    }else{
+        $(".moduleTypeList ").css("display", "none")
+        $(".selectModuleType .arrow").attr("src",iconDown)
+    }
+})
+    
+$('.selectReject').on("click", function(e){
+    e.stopPropagation()
+    $(".moduleTypeList ").css("display", "none")
+    $(".usedList ").css("display", "none")
+    $(".selectModuleType .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+    const showList =  $(".rejectList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".rejectList ").css("display","block")
+        $(".selectUsed .arrow").attr("src",iconUp)
+    }else{
+        $(".rejectList ").css("display", "none")
+        $(".selectUsed .arrow").attr("src",iconDown)
+    }
+})
+$('.selectUsed').on("click", function(e){
+    e.stopPropagation()
+    $(".moduleTypeList ").css("display", "none")
+    $(".rejectList ").css("display","none")
+    $(".selectModuleType .arrow").attr("src",iconDown)
+    $(".selectReject .arrow").attr("src",iconDown)
+    const showList =  $(".usedList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".usedList ").css("display","block")
+        $(".selectUsed .arrow").attr("src",iconUp)
+    }else{
+        $(".usedList ").css("display", "none")
+        $(".selectUsed .arrow").attr("src",iconDown)
+    }
+})
+// bindRejectSelect()
+// bindUsedSelect()
+// getmoduleTypeList()
+function renderTab(data,activePage){
+    let str = ``;
+    const cls = hasData("FUNC000007")?"editItem":"editItemDis";
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr data-id=${item.id} data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.name}</td>
+                <td class="textCenter">${item.percentStr}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindEdit(data,activePage)
+}
+
+function bindEdit(data,activePage){
+    if(!hasData('FUNC000007')){
+        return
+    }
+    $('.editItem').click(function(e){
+        const index = $(this).parent().attr('data-index') 
+        editItem(data[index],activePage)
+    })
+}
+
+//修改
+function editItem(item,activePage){
+    const itemCpoy = JSON.parse(JSON.stringify(item))
+    $('.pop-box').remove()
+    $('.container').append('<div class="pop-box"></div>')
+    const str = `
+        <div class="itemMsgBox">
+            <div class="mask"></div>
+            <div class="itemMsgContent">
+                <p class="itemMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgContentBox">
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">模块名称:</span> <span class="itemInfoRight">${itemCpoy.casesName}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">条目名称:</span> <span class="itemInfoRight"> ${itemCpoy.name}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">提示信息:</span> <span class="itemInfoRight"> <input class="itemTipMsg" value="${itemCpoy.msg}" /></span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">
+                        分值:
+                        </span> <span class="itemInfoRight"> 
+                            <input class="itemScore" type="number" min="0" value=${itemCpoy.score} />
+                        </span>
+                        <p class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</p>
+                    </div>
+                 
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">单项否决:</span><span class="itemInfoRight itemReject">${item.isReject == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo">  是</span>`:`<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">启用:</span><span class=" temInfoRight itemUsed">${item.isUsed == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo"> 是</span>`:`<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
+                </div>
+                
+                <div class="confirmEditBox"><span class="confirmEdit">保存</span></div>
+            </div>
+        </div>
+       
+    `
+    $("#mainBox", parent.document).append(str)
+    $("#mainBox .itemMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .itemMsgBox", parent.document).remove()
+    })
+    $("#mainBox .itemMsgBox .itemTipMsg", parent.document).on("input", function(e){
+        const val = $(this).val().trim()
+        itemCpoy.msg = val
+    })
+    $("#mainBox .itemMsgBox .itemScore", parent.document).on("keypress", function(e){
+        return (/[0-9\.]/.test(String.fromCharCode(e.keyCode)))
+    })
+    $("#mainBox .itemMsgBox .itemScore", parent.document).on("input", function(e){
+        const val = $(this).val()
+        itemCpoy.score = val
+    })
+    $("#mainBox .itemMsgBox .itemReject", parent.document).on("click", function(e){
+        itemCpoy.isReject = itemCpoy.isReject == 1 ? 0 : 1
+        $('#mainBox .itemMsgBox', parent.document).remove()
+        editItem(itemCpoy,activePage)
+    })
+    $("#mainBox .itemMsgBox .itemUsed", parent.document).on("click", function(e){
+        itemCpoy.isUsed = itemCpoy.isUsed == 1 ? 0 : 1
+        $('#mainBox .itemMsgBox', parent.document).remove()
+        editItem(itemCpoy,activePage)
+    })
+    
+    $("#mainBox .itemMsgBox .confirmEdit", parent.document).on("click", function(){
+        var reg = new RegExp(/^\d+(\.\d)?$/);
+        if(reg.test(itemCpoy.score)){
+            // console.log('itemCopy', itemCpoy)
+            if(!itemCpoy.msg.trim()){
+                $.alerModal({"message":"提示信息不能为空~",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+                return 
+            }
+            
+            saveEdit(itemCpoy,activePage)
+            $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display","none")
+            $('#mainBox .itemMsgBox', parent.document).remove()
+            return 
+        }else{
+            $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display","block")
+            
+            return
+        }
+      
+    })
+   
+    
+}
+
+//保存修改
+function saveEdit(item,activePage){
+    const param = {
+        id: item.id,
+        isReject: item.isReject,
+        isUsed: item.isUsed,
+        msg: item.msg,
+        score: item.score
+    }
+
+    post(api.updataQcCasesEntry,param).then(res =>{
+        if(res.data.code == '0'){
+            // const data = res.data.data
+            $.alerModal({"message":"修改成功",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            getTabData(activePage)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+//获取模块类型
+function getmoduleTypeList(){
+    post(api.getQcCasesAll).then(res =>{
+        if(res.data.code == '0'){
+           const  moduleTypeList = res.data.data
+           renderModuleTypeList(moduleTypeList)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+
+function renderModuleTypeList(moduleTypeList){
+    let str = `<li class="modeTypeItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < moduleTypeList.length; i++){
+        str += `<li class="modeTypeItem ellipsis" title=${moduleTypeList[i].name} data-id=${moduleTypeList[i].id} data-name=${moduleTypeList[i].name}> ${moduleTypeList[i].name}</li>`
+    }
+    $('.moduleTypeList').html(str)
+    bindModuleTypeSelect()
+}
+
+//模块类型选择
+function bindModuleTypeSelect(){
+    $('.modeTypeItem').on("click",function(){
+        const modeTypeItemName = $(this).attr("data-name")
+        const modeTypeItemId = $(this).attr("data-id")
+        casesIdTemp =modeTypeItemId
+        $('.selectModuleType').html(modeTypeItemName).attr("title",modeTypeItemName)
+        $(".selectModuleType").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".moduleTypeList ").css("display", "none")
+    })
+}
+//单项否决选择
+function bindRejectSelect(){
+    $('.rejectItem').on("click",function(){
+        const rejectItemName = $(this).attr("data-name")
+        const rejectItemId = $(this).attr("data-id")
+        isRejectTemp=rejectItemId
+        $('.selectReject').html(rejectItemName)
+        $(".rejectList ").css("display", "none")
+        $(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+    })
+}
+//是否启用选择
+function bindUsedSelect(){
+    $('.usedItem').on("click",function(){
+        const usedItemName = $(this).attr("data-name")
+        const usedItemItemId = $(this).attr("data-id")
+        isUsedTemp =usedItemItemId
+        $('.selectUsed').html(usedItemName)
+        $(".usedList").css("display", "none")
+        $(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+
+
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".moduleTypeList ").css("display", "none")
+    $(".rejectList ").css("display","none")
+    $(".usedList ").css("display", "none")
+    $(".selectModuleType .arrow").attr("src",iconDown)
+    $(".selectReject .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+})

+ 550 - 0
src/js/partDetail.js

@@ -0,0 +1,550 @@
+const $ = require('jquery');
+require("../css/partDetail.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+let deptList = JSON.parse(getCookie("deptList"))||[]
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+
+//科室处理
+getDeptList()
+function getDeptList(){
+    let str = ``
+    if(deptList.length<=0)return
+    $(".partDetail .selectDept ").attr("data-id",deptList[0].deptName).find("i").html(deptList[0].deptName)
+    deptIdTemp = deptList[0].deptName
+    deptId = deptList[0].deptName
+    for(let i = 0;i < deptList.length;i++){
+        let tmp = deptList[i]
+        str += `<li class="deptItem ellipsis" title="${tmp.deptName}" data-id="${tmp.deptName}" data-name="${tmp.deptName}">${tmp.deptName}</li>`
+    }
+    $(".partDetail .filterDropList").html(str)
+}
+
+
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        "asc": "",
+        "desc": "",
+        "deptName": deptId||"",
+        "name": behospitalCode||"",
+        "type": statisticsType||2, //1-本月,2-本年
+    }
+    post(api.homePageLevelByDeptLimit,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(data,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.deptId || "-"}</td>
+                <td >${item.doctorName || "-"}</td>
+                <td data-doc="${item.doctorName || ""}" class="goHomeDetail">${item.entryNum || "-"}</td>
+                <td >${item.averageValue || "-"}</td>
+                <td >${item.mrNum || "-"}</td>
+                <td >${item.firstLevelPercentStr || "-"}</td>
+                <td >${item.secondLevelPercentStr || "-"}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindScoreDetail(hisId)
+    $(".goHomeDetail").click(function(){
+        let docName = $(this).attr("data-doc")
+        $(parent.document).find("#contentIframe").attr("src","quexianDetail.html?from=1&deptName="+deptIdTemp+"&docName="+docName)
+    })
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 539 - 0
src/js/partDetailControl.js

@@ -0,0 +1,539 @@
+const $ = require('jquery');
+require("../css/partDetailControl.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        "asc": "",
+        "desc": "",
+        "level": deptId||"",
+        "name": behospitalCode||"",
+        "type": statisticsType||2, //1-本月,2-本年
+    }
+    post(api.homePageLevelStatistics,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(data,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.deptId || "-"}</td>
+                <td >${item.deptName || "-"}</td>
+                <td class="goHomeDetail" data-dept="${item.deptName || ""}">${item.entryNum || "-"}</td>
+                <td >${item.averageValue || "-"}</td>
+                <td >${item.mrNum || "-"}</td>
+                <td >${item.firstLevelPercentStr || "-"}</td>
+                <td >${item.secondLevelPercentStr || "-"}</td>
+            </tr>
+        `
+    }
+    $('tbody').html(str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>')
+    bindScoreDetail(hisId)
+    $(".goHomeDetail").click(function(){
+        let deptName = $(this).attr("data-dept")
+        $(parent.document).find("#contentIframe").attr("src","quexianDetailControl.html?deptName="+deptName+"&from=1")
+    })
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 552 - 0
src/js/payDetail.js

@@ -0,0 +1,552 @@
+const $ = require('jquery');
+require("../css/payDetail.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType=2,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+$('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+$('.iconCalen').on("mouseenter", function(e){
+    $(this).attr("src", iconCalenBlue)
+})
+$('.iconCalen').on("mouseleave", function(e){
+    $(this).attr("src", iconCalenGrey)
+})
+$('.iconCalen').on("click", function(e){
+    $(this).parent().find("input").focus()
+})
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        getTabData(1)
+    })
+}
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        size: 15,
+        name: behospitalCode||"",
+        type: statisticsType||2, //1-本月,2-本年
+        dateType: "",//(3-上月,4-去年本月,5-去年(必填))
+    }
+    post(api.getAverageFeePage,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(tabList,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = '',tmp = ''
+    
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td>${item.name || "-"}</td>
+                <td >${item.totleValue}</td>
+                <td >${item.lastAverageValue}</td>
+                <td style="display:${statisticsType==1?'table':'none'}">${item.lastYearAverageValue}</td>
+            </tr>
+        `
+    }
+    let sts = `
+        ${statisticsType==1?`<thead class="monType">
+            <th class="moduleName" style="width: 65px;">序号</th>
+            <th class="beHospitalId textCenter">科室名称</th>
+            <th class="patientNo textCenter" >上月平均住院天数(天)</th>
+            <th class="patientNo textCenter" >本月平均住院天数(天)</th>
+            <th class="patientNo textCenter" >去年本月平均住院天数(天)</th>
+        </thead>`:`
+        <thead class="yearType">
+            <th class="moduleName" style="width: 65px;">序号</th>
+            <th class="beHospitalId textCenter">科室名称</th>
+            <th class="patientNo textCenter" >本年平均住院天数(天)</th>
+            <th class="patientNo textCenter" >去年平均住院天数(天)</th>
+        </thead>
+        `}
+        <tbody>
+            ${str?str:'<tr><td colspan="17" style="text-align: center;color: #aaa">暂无数据~</td></tr>'}
+        </tbody>
+    `
+    $('.tableDay').html(sts)
+    bindScoreDetail(hisId)
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+}
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 72 - 16
src/js/qcList.js

@@ -32,7 +32,9 @@ $('.iconCalen').on("click", function(e){
     $(this).parent().find("input").focus()
 })
 $('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
-
+$(".abnormalClear").click(function(){
+    window.location.reload()
+})
 //判断有无某一权限
   function hasData(data){
     let trdObj = JSON.parse(getCookie("trdObj"))
@@ -56,8 +58,8 @@ function getTabData(activePage){
         desc:data_desc,       //降序
         doctorName: doctorName,
         doctorCode: doctorNum,
-        behosDateStart: behosDateStart, //1-单项否决 0-非
-        behosDateEnd: behosDateEnd, //0-未启用 1-启用
+        leaveHosDateStart: behosDateStart, //1-单项否决 0-非
+        leaveHosDateEnd: behosDateEnd, //0-未启用 1-启用
         size: 15
     }
     post(api.qcList,param).then(res =>{
@@ -81,7 +83,7 @@ function getTabData(activePage){
     })
 }
 
-getTabData(1)
+//getTabData(1)
 
 $(".filter").on("click", function(e){
     behosDateStart = $("#datepicker").val().trim()
@@ -106,9 +108,50 @@ $(".filter").on("click", function(e){
     doctorNum = doctorNumTemp
     getTabData(1)
 })
+$(".reset").on("click", function(e){
+    tabList = []; 
+    name = ""; 
+    behospitalCode="";  
+    behosDateStart="";  
+    level=""; 
+    behosDateEnd="";  
+    scoreSum = 0; 
+    nameTemp = "";  
+    behospitalCodeTemp=""; 
+    levelTemp="";  
+    deptId=""; 
+    deptIdTemp="";  
+    doctorName=""; 
+    doctorNum=""; 
+    doctorNameTemp=""; 
+    doctorNumTemp=""; 
+    data_desc=[]; 
+    data_asc=[];
+    $('.patientNumInp').val('')
+    $('.patientNameInp').val('')
+    $('.doctorInp').val('')
+    $('.doctorNumInp').val('')
+    $('.doctorInp').val('')
+    $('#datepicker').val('')
+    $('#datepicker2').val('')
+    $('.selectDept ').html('选择科室')
+    $(".deptList").css("display", "none")
+    $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    $('.selectDept ').addClass('unSelect')
+    $('.selectLevel').html('选择病历等级')
+    $(".levelList").css("display", "none")
+    $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    $('.selectLevel ').addClass('unSelect')
+    $("th[code]").removeClass("asc desc")
+    getTabData(1)
+})
 function renderTab(data,hisId){
     let str = ``
-    let hasSelectAll = true
+    let hasSelectAll = true;
+    if(data.length===0){
+      $('tbody').html(`<tr><td colspan='17' style="text-align: center;color: #aaa">暂无数据~</td></tr>`);
+      return;
+    }
     for(let i = 0; i < data.length; i++){
         const item = data[i]
         if(!item.hasSelect){
@@ -196,6 +239,7 @@ function bindLeveldSelect(){
         $('.selectLevel').html(levelItemName)
         $(".levelList").css("display", "none")
         $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+        $('.selectLevel').removeClass('unSelect')
     })
 }
 
@@ -216,7 +260,7 @@ function bindRecordScoreOper(){
         const index = $(this).parent().attr("data-index")
         const behospitalCode = tabList[index].behospitalCode
         loading()
-        recordScore(behospitalCode,1)
+        recordScore(behospitalCode,1,true)
     })
 }
 function bindOperaAll(){
@@ -265,7 +309,7 @@ function getDeptList(){
 
 
 function rendeDeptList(deptList){
-    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    let str = ``
     for(let i = 0; i < deptList.length; i++){
         str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
     }
@@ -285,8 +329,8 @@ function bindDeptSelect(){
         }
         $('.selectDept ').attr('title',deptItemName)
         $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
-
         $(".deptList").css("display", "none")
+        $('.selectDept').removeClass('unSelect')
     })
 }
 function loading(){
@@ -335,9 +379,9 @@ $("th[code]").on("click",function(e){
       $(this).addClass("asc");
     }
     getTabData(1);
-    console.log(code)
+    // console.log(code)
 });
-function recordScore(behospitalCode,totalNum){
+function recordScore(behospitalCode,totalNum,hasToast){
     const param = {
         behospitalCode: behospitalCode
     }
@@ -351,10 +395,21 @@ function recordScore(behospitalCode,totalNum){
 
                 getTabData(activePage)
             }
-      
-        }else{}
+            if(hasToast){
+                $.alerModal({"message":'评分成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            }
+            
+        }else{
+            hideLoading()
+            if(hasToast){
+                $.alerModal({"message":'评分失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            }
+        }
     }).catch((e) =>{
-    
+        hideLoading()
+        if(hasToast){
+            $.alerModal({"message":'评分失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
     })
 }
 $(".patientNumInp").on("input", function(e){
@@ -410,13 +465,14 @@ $(function() {
     $( "#datepicker" ).datepicker({
         changeMonth: true,
         changeYear: true,
-        dateFormat:"yy/mm/dd"
-    });
+        dateFormat:"yy/mm/dd",
+    }).datepicker( "setDate", "-1m" );
     $( "#datepicker2" ).datepicker({
         changeMonth: true,
         changeYear: true,
         dateFormat:"yy/mm/dd"
-    });
+    }).datepicker( "setDate", new Date());
+    $(".filter").click();   //初始查询
 });
 
 //分页渲染

+ 0 - 0
src/js/qcListDept.js


Some files were not shown because too many files changed in this diff