瀏覽代碼

Merge remote-tracking branch 'origin/master' into referMaster

zhouna 3 年之前
父節點
當前提交
10585bbf1d
共有 50 個文件被更改,包括 8074 次插入2571 次删除
  1. 1 0
      package.json
  2. 435 0
      src/css/dataAnalysis/improveStatistics.less
  3. 403 0
      src/css/dataAnalysis/statisticsDetail.less
  4. 431 0
      src/css/dataAnalysis/useStatistics.less
  5. 434 0
      src/css/dept/improveStatisticsDept.less
  6. 403 0
      src/css/dept/statisticsDetailDept.less
  7. 422 0
      src/css/dept/useStatisticsDept.less
  8. 30 0
      src/css/index.less
  9. 21 1
      src/css/reset.less
  10. 74 0
      src/html/dataAnalysis/improveStatistics.html
  11. 86 0
      src/html/dataAnalysis/statisticsDetail.html
  12. 70 0
      src/html/dataAnalysis/useStatistics.html
  13. 84 0
      src/html/dept/improveStatisticsDept.html
  14. 86 0
      src/html/dept/statisticsDetailDept.html
  15. 72 0
      src/html/dept/useStatisticsDept.html
  16. 13 4
      src/html/index.html
  17. 二進制
      src/images/data-edit.png
  18. 二進制
      src/images/data-edit_a.png
  19. 二進制
      src/images/data-sys.png
  20. 二進制
      src/images/data-sys_a.png
  21. 6 1
      src/js/allotCheckTask.js
  22. 16 1
      src/js/api.js
  23. 60 53
      src/js/checkTaskList.js
  24. 7 1
      src/js/creatCheckTask.js
  25. 413 0
      src/js/dataAnalysis/improveStatistics.js
  26. 370 0
      src/js/dataAnalysis/statisticsDetail.js
  27. 321 0
      src/js/dataAnalysis/useStatistics.js
  28. 431 0
      src/js/dept/improveStatisticsDept.js
  29. 583 577
      src/js/dept/qcListOutHospitalDept.js
  30. 358 0
      src/js/dept/statisticsDetailDept.js
  31. 265 0
      src/js/dept/useStatisticsDept.js
  32. 88 28
      src/js/index.js
  33. 1 1
      src/js/itemManager.js
  34. 4 0
      src/js/keyItemFlawControl.js
  35. 8 16
      src/js/login.js
  36. 14 0
      src/js/mock.js
  37. 50 27
      src/js/modal.js
  38. 1 1
      src/js/moduleManager.js
  39. 0 1
      src/js/mukuaiControl.js
  40. 22 19
      src/js/qcList.js
  41. 6 1
      src/js/qcListDept.js
  42. 491 485
      src/js/qcListDocteam.js
  43. 574 568
      src/js/qcListOutHospital.js
  44. 521 515
      src/js/qcListPerson.js
  45. 3 1
      src/js/qcScore.js
  46. 185 179
      src/js/readmission.js
  47. 5 4
      src/js/roleManager.js
  48. 1 1
      src/js/userManager.js
  49. 204 85
      src/js/utils.js
  50. 1 1
      webpack.config.js

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "jquery": "^1.12.4",
     "jquery-templates": "^1.0.0",
     "js-md5": "^0.7.3",
+    "mockjs": "^1.1.0",
     "uninstall": "0.0.0"
   },
   "devDependencies": {

+ 435 - 0
src/css/dataAnalysis/improveStatistics.less

@@ -0,0 +1,435 @@
+@import '../reset.less';
+
+.container {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: @disColor;
+}
+
+.partDetailControl {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+
+        .selectLevel,
+        .levelList {
+            width: 180px;
+        }
+
+        .deptListWrap {
+            display: none;
+        }
+    }
+
+    .filterItem.deptListWrap {
+
+        .selectDept,
+        .deptList,.selectCase,
+        .caseList {
+            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 {
+        .main-body-com;
+        min-width: 1160px;
+        /*width: 100%;*/
+    }
+
+    table {
+        .table;
+        min-width: 1090px;
+
+        th,
+        td {
+            text-align: center;
+        }
+
+        th {
+            white-space: nowrap;
+        }
+
+        td {
+            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: 10px;
+    }*/
+    .filterItem {
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 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;
+        }
+
+        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 {
+        position: absolute;
+        top: 34px !important;
+        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;
+        }
+    }
+
+    .filterItem input{
+        height: 34px;
+    }
+    .deptList,.caseList {
+        width: 160px;
+        max-height: 400px;
+    }
+
+    .levelList {
+        width: 120px;
+        height: 120px;
+
+        li:hover {
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+
+    .selectLevel,
+    .selectDept,.selectCase {
+        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,.selectCase {
+        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;
+    }
+
+    .export {
+        display: inline-block;
+        width: 60px;
+        height: 34px;
+        line-height: 34px;
+        background: #fff;
+        border-radius: 4px;
+        color: #777;
+        text-align: center;
+        border: 1px solid #777;
+        box-sizing: border-box;
+        cursor: pointer;
+        margin-left: 10px;
+        float: left;
+        top: 0px;
+    }
+
+    .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;
+    }
+
+    .textCenter {
+        width: 200px;
+        text-align: center;
+    }
+
+    .patientNameSpan {
+        color: #00A1F0;
+        cursor: pointer;
+    }
+
+    .patientNameSpans {
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+
+    .deptItem:hover,.caseItem:hover {
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+
+    .ellipsis {
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+
+
+    .pagination {
+        margin: 35px 0 20px 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;
+}
+
+.goHomeDetail1 {
+    color: #00A1F0;
+    cursor: pointer;
+}

+ 403 - 0
src/css/dataAnalysis/statisticsDetail.less

@@ -0,0 +1,403 @@
+@import "../reset.less";
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background: #fff;
+    border-bottom: 10px @disColor solid;
+    box-sizing: border-box;
+}
+ul,li{
+    list-style: none;
+}
+h2{
+    .h2;
+    border-bottom: 10px @disColor solid;
+    position: fixed;
+    top: 0;
+}
+.partTitle{
+    border-bottom: 10px @disColor solid;
+    height: 54px;
+}
+.main-body{
+    .main-body-com;
+    border: none;
+    // border:10px @disColor solid;
+    border-left:10px @disColor solid;
+    border-top:10px @disColor solid;
+    margin: 44px 0 0;
+    min-width: 1090px;
+    min-height: calc(100% - 84px);
+    // overflow: auto;
+    height:  calc(100% - 44px);
+    .selectDefect,.selectDept{
+        background-color: #EFF1F6;
+        min-width: 120px;
+        width: auto;
+        display: inline-block;
+        position: relative;
+        padding: 0 10px;
+        height:32px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: default;
+    }
+}
+.qctable{
+    .table;
+    min-width: 1090px;
+    th,td{
+        padding:5px 10px;
+        text-align: center;
+    }
+    th{
+        white-space: nowrap;
+    }
+    th[code]{
+        cursor: pointer;
+        &:after{
+            content:"";
+            display:inline-block;
+            width: 11px;
+            height: 14px;
+            margin-left: 4px;
+            vertical-align: middle;
+            background-size: 100%;
+            background-image: url("../../images/grey.png");
+        }
+        &.asc:after{
+            background: url("../../images/up_blue.png");
+            background-size: 100%;
+        }
+        &.desc:after{
+            background: url("../../images/down_blue.png");
+            background-size: 100%;
+        }
+    }
+    td{
+        white-space: nowrap;
+    }
+    .moduleNumber{
+        text-align: center;
+    }
+    .scoreOperaItem{
+        width: 50px;
+        cursor: pointer;
+    }
+    .tabTitle   {
+        background: #EFF0F9 !important;
+      }
+    
+}
+.tabFoot{
+    height: 40px;
+    background: none;
+    /*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;
+        vertical-align: middle;
+    }
+}
+
+.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: #fff;
+    background: @activeColor;
+}
+.filterBox{
+    position: relative;
+}
+.overAuto{
+    display: table;
+    padding-right: 20px;
+    width: 100%;
+}
+.toggle-item{
+    display: none;
+}
+.filter-toggler{
+    position: absolute;
+    left: 1048px;
+    top: 8px;
+    color: #777;
+    white-space: nowrap;
+    font-size: 14px;
+    background: url("../../images/arrow_down.png") 60px center no-repeat;
+    padding-right: 15px;
+    background-size: 10px 6px;
+    &.up{
+        background: url("../../images/arrow_up.png") 60px center no-repeat;
+        background-size: 10px 6px;
+    }
+}
+.filterItem{
+    position: relative;
+    display: inline-block;
+    float: left;
+    height: 40px;
+    line-height: 40px;
+    margin: 0 20px 20px 0;
+    span{
+        display: inline-block;
+        line-height: 32px;
+        position: relative;
+    }
+    input{
+        width:120px;
+        height:32px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        outline: none;
+        margin-right: 10px;
+        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{
+    position: absolute;
+    right: 0;
+    top: 34px !important;
+    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,.checkList{
+    width: 120px;
+    // height: 200px;
+    li:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+}
+.selectLevel,.selectDept,.fpSelectCheck,.qcSelectCheck{
+    display: inline-block;
+    position: relative;
+    width:120px;
+    padding: 0 10px;
+    height:32px;
+    border-radius:4px;
+    border: 1px solid #E2E5EF;
+    box-sizing: border-box;
+    cursor: pointer;
+}
+.selectDept{
+    width: 160px;
+}
+
+.filter,.reset,.export{
+    display: inline-block;
+    width:60px;
+    height:32px;
+    background:@activeColor;
+    border-radius:4px;
+    color: #fff;
+    text-align: center;
+    line-height: 32px;
+    position: relative;
+    top: 2px;
+    cursor: pointer;
+    float: left;
+    margin: 0 0px 22px 0;
+}
+.export{
+    height:34px;
+    background: #fff;
+    border-radius: 4px;
+    color: #777;
+    border: 1px solid #777;
+    box-sizing: border-box;
+    cursor: pointer;
+    margin-left: 10px;
+    float: left;
+    top: 0px;
+}
+.arrow{
+    position: absolute;
+    width: 10px;
+    top: 12px;
+    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: 32px;
+    input{
+        position: absolute;
+    }
+}
+.setCol{
+    color: #777;
+    cursor: pointer;
+    display: inline-block;
+    // margin: 10px 0 0  0px;
+     margin: 0 0 0  50px;
+}
+.iconSetting{
+    width: 18px;
+    position: relative;
+    top: 3px;
+    margin: 0 3px 0 0;
+}
+.iconCalen{
+    position: absolute;
+    width: 15px;
+    top: 10px;
+    right: 10px;
+}
+.textCenter{
+    text-align: center;
+}
+.patientNameSpan{
+    color: @activeColor;
+    cursor: pointer;
+}
+
+.deptItem:hover{
+    background-color: #EEF4FF;
+    cursor: pointer;
+}
+.ellipsis{
+    overflow: hidden;
+    text-overflow:ellipsis;
+    white-space: nowrap;
+}
+.unSelect{
+    color: #cfccd6
+ }
+
+
+.pagination{
+    margin: 35px 0 20px 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;
+}
+
+.tipIcon{
+  color: #777;
+  cursor: pointer;
+  display: inline-block;
+  margin-left: 6px;
+  margin-right: 2px;
+}
+.toolTipIcon{
+    width: 18px;
+    position: relative;
+    top: 3px;
+}
+
+.tooltip{
+    visibility: hidden;
+    position: relative;
+    padding: 7px 10px;
+    border-radius: 4px;
+    margin: 100px auto;
+    background-color: #4D4D4D;
+    text-align: center;
+    color: #fff;
+    font-size: 14px;
+}
+.tooltip:before{
+    content: '';
+    display: block;
+    position: absolute;
+    bottom: 9px;
+    left: -12px;
+    border-bottom: 6px solid transparent;
+    border-top: 6px solid transparent;
+    border-left: 6px solid transparent;
+    border-right: 6px solid #4D4D4D;
+}
+
+
+
+

+ 431 - 0
src/css/dataAnalysis/useStatistics.less

@@ -0,0 +1,431 @@
+@import '../reset.less';
+
+.container {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: @disColor;
+}
+
+.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 {
+        .main-body-com;
+        min-width: 1160px;
+        /*width: 100%;*/
+    }
+
+    table {
+        .table;
+        min-width: 1090px;
+
+        th,
+        td {
+            text-align: center;
+        }
+
+        th {
+            white-space: nowrap;
+        }
+
+        td {
+            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: 10px;
+    }*/
+    .filterItem {
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 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;
+        }
+
+        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 {
+        position: absolute;
+        top: 34px !important;
+        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;
+    }
+
+    .export {
+        display: inline-block;
+        width: 60px;
+        height: 34px;
+        line-height: 34px;
+        background: #fff;
+        border-radius: 4px;
+        color: #777;
+        text-align: center;
+        border: 1px solid #777;
+        box-sizing: border-box;
+        cursor: pointer;
+        margin-left: 10px;
+        float: left;
+        top: 0px;
+    }
+
+    .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;
+    }
+
+    .textCenter {
+        width: 200px;
+        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 20px 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;
+}
+
+.goHomeDetail1 {
+    color: #00A1F0;
+    cursor: pointer;
+}

+ 434 - 0
src/css/dept/improveStatisticsDept.less

@@ -0,0 +1,434 @@
+@import '../reset.less';
+
+.container {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: @disColor;
+}
+
+.partDetailControl {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+
+        .selectLevel,
+        .levelList {
+            width: 180px;
+        }
+
+        .deptListWrap {
+            display: none;
+        }
+    }
+
+    .filterItem.deptListWrap {
+
+        .selectDept,
+        .deptList,.selectCase,
+        .caseList {
+            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 {
+        .main-body-com;
+        min-width: 1160px;
+        /*width: 100%;*/
+    }
+
+    table {
+        .table;
+        min-width: 1090px;
+
+        th,
+        td {
+            text-align: center;
+        }
+
+        th {
+            white-space: nowrap;
+        }
+
+        td {
+            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: 10px;
+    }*/
+    .filterItem {
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 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;
+        }
+
+        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 {
+        position: absolute;
+        top: 34px !important;
+        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;
+        }
+    }
+    .filterItem input{
+        height: 34px;
+    }
+    .deptList,.caseList {
+        width: 160px;
+        max-height: 400px;
+    }
+
+    .levelList {
+        width: 120px;
+        height: 120px;
+
+        li:hover {
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+
+    .selectLevel,
+    .selectDept,.selectCase {
+        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,.selectCase {
+        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;
+    }
+
+    .export {
+        display: inline-block;
+        width: 60px;
+        height: 34px;
+        line-height: 34px;
+        background: #fff;
+        border-radius: 4px;
+        color: #777;
+        text-align: center;
+        border: 1px solid #777;
+        box-sizing: border-box;
+        cursor: pointer;
+        margin-left: 10px;
+        float: left;
+        top: 0px;
+    }
+
+    .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;
+    }
+
+    .textCenter {
+        width: 200px;
+        text-align: center;
+    }
+
+    .patientNameSpan {
+        color: #00A1F0;
+        cursor: pointer;
+    }
+
+    .patientNameSpans {
+        color: #FF4D4F;
+        cursor: pointer;
+        margin-left: 30px;
+    }
+
+    .deptItem:hover,.caseItem:hover {
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+
+    .ellipsis {
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+
+
+    .pagination {
+        margin: 35px 0 20px 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;
+}
+
+.goHomeDetail1 {
+    color: #00A1F0;
+    cursor: pointer;
+}

+ 403 - 0
src/css/dept/statisticsDetailDept.less

@@ -0,0 +1,403 @@
+@import "../reset.less";
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background: #fff;
+    border-bottom: 10px @disColor solid;
+    box-sizing: border-box;
+}
+ul,li{
+    list-style: none;
+}
+h2{
+    .h2;
+    border-bottom: 10px @disColor solid;
+    position: fixed;
+    top: 0;
+}
+.partTitle{
+    border-bottom: 10px @disColor solid;
+    height: 54px;
+}
+.main-body{
+    .main-body-com;
+    border: none;
+    // border:10px @disColor solid;
+    border-left:10px @disColor solid;
+    border-top:10px @disColor solid;
+    margin: 44px 0 0;
+    min-width: 1090px;
+    min-height: calc(100% - 84px);
+    // overflow: auto;
+    height:  calc(100% - 44px);
+    .selectDefect{        
+        background-color: #EFF1F6;
+        min-width: 120px;
+        width: auto;
+        display: inline-block;
+        position: relative;
+        padding: 0 10px;
+        height:32px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: default;
+    }
+}
+.qctable{
+    .table;
+    min-width: 1090px;
+    th,td{
+        padding:5px 10px;
+        text-align: center;
+    }
+    th{
+        white-space: nowrap;
+    }
+    th[code]{
+        cursor: pointer;
+        &:after{
+            content:"";
+            display:inline-block;
+            width: 11px;
+            height: 14px;
+            margin-left: 4px;
+            vertical-align: middle;
+            background-size: 100%;
+            background-image: url("../../images/grey.png");
+        }
+        &.asc:after{
+            background: url("../../images/up_blue.png");
+            background-size: 100%;
+        }
+        &.desc:after{
+            background: url("../../images/down_blue.png");
+            background-size: 100%;
+        }
+    }
+    td{
+        white-space: nowrap;
+    }
+    .moduleNumber{
+        text-align: center;
+    }
+    .scoreOperaItem{
+        width: 50px;
+        cursor: pointer;
+    }
+    .tabTitle   {
+        background: #EFF0F9 !important;
+      }
+    
+}
+.tabFoot{
+    height: 40px;
+    background: none;
+    /*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;
+        vertical-align: middle;
+    }
+}
+
+.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: #fff;
+    background: @activeColor;
+}
+.filterBox{
+    position: relative;
+}
+.overAuto{
+    display: table;
+    padding-right: 20px;
+    width: 100%;
+}
+.toggle-item{
+    display: none;
+}
+.filter-toggler{
+    position: absolute;
+    left: 1048px;
+    top: 8px;
+    color: #777;
+    white-space: nowrap;
+    font-size: 14px;
+    background: url("../../images/arrow_down.png") 60px center no-repeat;
+    padding-right: 15px;
+    background-size: 10px 6px;
+    &.up{
+        background: url("../../images/arrow_up.png") 60px center no-repeat;
+        background-size: 10px 6px;
+    }
+}
+.filterItem{
+    position: relative;
+    display: inline-block;
+    float: left;
+    height: 40px;
+    line-height: 40px;
+    margin: 0 20px 20px 0;
+    span{
+        display: inline-block;
+        line-height: 32px;
+        position: relative;
+    }
+    input{
+        width:120px;
+        height:32px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        outline: none;
+        margin-right: 10px;
+        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{
+    position: absolute;
+    right: 0;
+    top: 34px !important;
+    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,.checkList{
+    width: 120px;
+    // height: 200px;
+    li:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+}
+.selectLevel,.selectDept,.fpSelectCheck,.qcSelectCheck{
+    display: inline-block;
+    position: relative;
+    width:120px;
+    padding: 0 10px;
+    height:32px;
+    border-radius:4px;
+    border: 1px solid #E2E5EF;
+    box-sizing: border-box;
+    cursor: pointer;
+}
+.selectDept{
+    width: 160px;
+}
+
+.filter,.reset,.export{
+    display: inline-block;
+    width:60px;
+    height:32px;
+    background:@activeColor;
+    border-radius:4px;
+    color: #fff;
+    text-align: center;
+    line-height: 32px;
+    position: relative;
+    top: 2px;
+    cursor: pointer;
+    float: left;
+    margin: 0 0px 22px 0;
+}
+.export{
+    height:34px;
+    background: #fff;
+    border-radius: 4px;
+    color: #777;
+    border: 1px solid #777;
+    box-sizing: border-box;
+    cursor: pointer;
+    margin-left: 10px;
+    float: left;
+    top: 0px;
+}
+.arrow{
+    position: absolute;
+    width: 10px;
+    top: 12px;
+    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: 32px;
+    input{
+        position: absolute;
+    }
+}
+.setCol{
+    color: #777;
+    cursor: pointer;
+    display: inline-block;
+    // margin: 10px 0 0  0px;
+     margin: 0 0 0  50px;
+}
+.iconSetting{
+    width: 18px;
+    position: relative;
+    top: 3px;
+    margin: 0 3px 0 0;
+}
+.iconCalen{
+    position: absolute;
+    width: 15px;
+    top: 10px;
+    right: 10px;
+}
+.textCenter{
+    text-align: center;
+}
+.patientNameSpan{
+    color: @activeColor;
+    cursor: pointer;
+}
+
+.deptItem:hover{
+    background-color: #EEF4FF;
+    cursor: pointer;
+}
+.ellipsis{
+    overflow: hidden;
+    text-overflow:ellipsis;
+    white-space: nowrap;
+}
+.unSelect{
+    color: #cfccd6
+ }
+
+
+.pagination{
+    margin: 35px 0 20px 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;
+}
+
+.tipIcon{
+  color: #777;
+  cursor: pointer;
+  display: inline-block;
+  margin-left: 6px;
+  margin-right: 2px;
+}
+.toolTipIcon{
+    width: 18px;
+    position: relative;
+    top: 3px;
+}
+
+.tooltip{
+    visibility: hidden;
+    position: relative;
+    padding: 7px 10px;
+    border-radius: 4px;
+    margin: 100px auto;
+    background-color: #4D4D4D;
+    text-align: center;
+    color: #fff;
+    font-size: 14px;
+}
+.tooltip:before{
+    content: '';
+    display: block;
+    position: absolute;
+    bottom: 9px;
+    left: -12px;
+    border-bottom: 6px solid transparent;
+    border-top: 6px solid transparent;
+    border-left: 6px solid transparent;
+    border-right: 6px solid #4D4D4D;
+}
+
+
+
+

+ 422 - 0
src/css/dept/useStatisticsDept.less

@@ -0,0 +1,422 @@
+@import '../reset.less';
+
+.container {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: @disColor;
+}
+
+.partDetailControl {
+    .dayFilter {
+        .levelList {
+            height: 80px;
+        }
+
+        .selectLevel,
+        .levelList {
+            width: 180px;
+        }
+
+        .deptListWrap {
+            display: none;
+        }
+    }
+    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 {
+        .main-body-com;
+        min-width: 1160px;
+        /*width: 100%;*/
+    }
+
+    table {
+        .table;
+        min-width: 1090px;
+
+        th,
+        td {
+            text-align: center;
+        }
+
+        th {
+            white-space: nowrap;
+        }
+
+        td {
+            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: 10px;
+    }*/
+    .filterItem {
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 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;
+        }
+
+        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 {
+        position: absolute;
+        top: 34px !important;
+        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;
+    }
+
+    .export {
+        display: inline-block;
+        width: 60px;
+        height: 34px;
+        line-height: 34px;
+        background: #fff;
+        border-radius: 4px;
+        color: #777;
+        text-align: center;
+        border: 1px solid #777;
+        box-sizing: border-box;
+        cursor: pointer;
+        margin-left: 10px;
+        float: left;
+        top: 0px;
+    }
+
+    .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;
+    }
+
+    .textCenter {
+        width: 200px;
+        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 20px 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;
+}
+
+.goHomeDetail1 {
+    color: #00A1F0;
+    cursor: pointer;
+}

+ 30 - 0
src/css/index.less

@@ -230,6 +230,24 @@
         background: url("../images/un_a.png") @activeBg 16px 11px no-repeat;
       }
     }
+    .YH-SJFX{
+      background: url("../images/un.png") 16px 11px no-repeat;
+      &.active{
+        background: url("../images/un_a.png") @activeBg 16px 11px no-repeat;
+      }
+    }
+    .YH-SJFXKS,.YH-SJFX{
+      background: url("../images/data-sys.png") 16px 11px no-repeat;
+      &.active{
+        background: url("../images/data-sys_a.png") @activeBg 16px 11px no-repeat;
+      }
+    }
+    .YH-SJBJ{
+      background: url("../images/data-edit.png") 16px 11px no-repeat;
+      &.active{
+        background: url("../images/data-edit_a.png") @activeBg 16px 11px no-repeat;
+      }
+    }
     .slide-btn{
       display: inline-block;
     }
@@ -412,6 +430,18 @@
         background: url("../images/un_a.png") @activeBg 25px 11px no-repeat;
       }
     }
+    .YH-SJFX{
+      background: url("../images/un.png") 24px 11px no-repeat;
+      &.active{
+        background: url("../images/un_a.png") @activeBg 24px 11px no-repeat;
+      }
+    }
+    .YH-SJFXKS,.YH-SJFX{
+      background: url("../images/data-sys.png") 24px 11px no-repeat;
+      &.active{
+        background: url("../images/data-sys_a.png") @activeBg 24px 11px no-repeat;
+      }
+    }
   }
   .main{
     margin-left:@menuWt;

+ 21 - 1
src/css/reset.less

@@ -253,7 +253,7 @@ textarea {
     border-radius: 4px;
     overflow: hidden;
   }
-  .title {
+  .titlemodal {
     border-bottom: 1px solid #eee;
     line-height: 40px;
     height: 40px;
@@ -271,6 +271,17 @@ textarea {
     padding: 25px 15px 0 15px;
     font-size: 14px;
     text-align: center;
+    .warnimg {
+      width: 16px;
+      vertical-align: text-top;
+      margin-left: -18px;
+
+    }
+  }
+  .contentleft {
+    padding: 25px 30px 0 30px;
+    font-size: 14px;
+    text-align: left;
   }
   .btns {
     height: 36px;
@@ -299,6 +310,15 @@ textarea {
       margin-left: 30px;
       margin-right: 30px;
     }
+    .gobackbtn {
+      float: right;
+      background-color: #1E9FFF !important;
+      border-color: #1E9FFF !important;
+      color: #fff;
+      margin-right: 30px;
+
+
+    }
   }
 }
 .divModal {

+ 74 - 0
src/html/dataAnalysis/improveStatistics.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 partDetailControl">
+        <div class="partTitle">
+          <p>条目缺陷改善统计</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="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <input type="text" class="selectDept canEditDept" value="全部">
+                    <ul class="deptList filterDropList"></ul>
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>缺陷名称:</span>
+                    <input class="moduleItemInp" id="entryName" type="text" placeholder="缺陷名称" autocomplete="off">
+                </span>
+                <span class="filterItem">
+                    <span>模块名称:</span>
+                    <input type="text" class="selectCase canEditDept" value="全部">
+                    <ul class="caseList filterDropList"></ul>
+                </span>
+                <span class="filterItem typeFilter clearfix dataSelectLight">
+                    <span class="fl">选择日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" readonly/></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" readonly/></span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+                <span class="export">导出</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 desc" code="totalNum">总数量</th>
+                        <th class="beHospitalId textCenter">已改善数量</th>
+                        <th class="beHospitalId textCenter" code="improveleNum">待改善数量</th>
+                        <th class="beHospitalId textCenter">改善率</th>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 86 - 0
src/html/dataAnalysis/statisticsDetail.html

@@ -0,0 +1,86 @@
+<!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 qcListCopy">
+        <div class="partTitle">
+            <p class="titlePic"></p>
+        </div>
+        <div class="main-body">
+            <div class="filterBox">
+                <div class="clearfix">
+                    <span class="filterItem typeFilter deptListWrap">
+                        <span>科室:</span>
+                        <span class="selectDept">全部</span>
+                        <!--<input type="text" class="selectDept canEditDept" value="全部">
+                        <ul class="deptList filterDropList"></ul>-->
+                    </span>
+                    <span class="filterItem typeFilter">
+                        <span>病人住院序号:</span>
+                        <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入病人住院序号">
+                    </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-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="filterclear abnormalClear filterclearT">重置</span>
+                    <span class="export">导出</span>
+                </div>
+                <a href="javascript:void(0);" class="filter-toggler" id="filterToggler">展开筛选</a>
+                <div class="toggle-item clearfix">
+                    <span class="filterItem typeFilter">
+                        <span>病人姓名:</span>
+                        <input class="patientNameInp" type="text" placeholder="请输入病人姓名">
+                    </span>
+                    <span class="filterItem doctorFilter">
+                        <span>医生姓名:</span>
+                        <input class="doctorInp" type="text" placeholder="请输入医生姓名">
+                    </span>
+                    <span class="filterItem doctorFilter">
+                        <span>医生工号:</span>
+                        <input class="doctorNumInp" type="text" placeholder="请输入医生工号">
+                    </span>
+                </div>
+            </div>
+            <div class="overAuto">
+                <table class="qctable">
+                    <thead>
+                    <th class="moduleName" style="width: 65px;" code="level">病历等级</th>
+                    <th class="beHospitalId textCenter" code="scoreRes">病历得分</th>
+                    <th class="beHospitalId textCenter" code="behospitalCode">病人住院序号</th>
+                    <th class="beHospitalId textCenter" code="fileCode">病案号</th>
+                    <th class="beHospitalId textCenter" code="name">病人姓名</th>
+                    <th class="beHospitalId textCenter" code="age">年龄</th>
+                    <th class="beHospitalId textCenter desc" code="behospitalDate">入院日期</th>
+                    <th class="beHospitalId textCenter" code="leaveHospitalDate">出院日期</th>
+                    <th class="beHospitalId textCenter" code="behDoctorName">主管医生</th>
+                    <th class="beHospitalId textCenter" code="behDeptName">科室</th>
+                    <th class="beHospitalId textCenter" code="gradeTime">评分时间</th>
+                    </thead>
+                    <tbody class="tbody"></tbody>
+                    <tfoot></tfoot>
+                </table>
+            </div>
+            <div class="pagination"></div>
+        </div>
+
+    </div>
+</body>
+
+</html>

+ 70 - 0
src/html/dataAnalysis/useStatistics.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 partDetailControl">
+        <div class="partTitle">
+          <p>临床质控使用统计</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="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <input type="text" class="selectDept canEditDept" value="全部">
+                    <ul class="deptList filterDropList"></ul>
+                </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="filterItem typeFilter clearfix dataSelectLight">
+                    <span class="fl">选择日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" readonly/></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" readonly/></span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+                <span class="export">导出</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                        <th class="moduleName" style="width: 65px;">序号</th>
+                        <th class="beHospitalId textCenter">科室</th>
+                        <th class="beHospitalId textCenter" code="singleModeNum">模块质控按钮点击数</th>
+                        <th class="beHospitalId textCenter desc" code="totalModeNum">全病历质控按钮点击数</th>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 84 - 0
src/html/dept/improveStatisticsDept.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 partDetailControl">
+        <div class="partTitle">
+          <p>条目缺陷改善统计</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="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <span class="selectDept canEditDept"></span>
+                    <ul class="deptList filterDropList"></ul>
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>缺陷名称:</span>
+                    <input class="moduleItemInp" id="entryName" type="text" placeholder="缺陷名称" autocomplete="off">
+                </span>
+                <span class="filterItem">
+                    <span>模块名称:</span>
+                    <input type="text" class="selectCase canEditDept" value="全部">
+                    <ul class="caseList filterDropList"></ul>
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>主管医生:</span>
+                    <input class="moduleItemInp" id="doctorName" type="text" placeholder="主管医生" autocomplete="off">
+                </span>
+                <span class="filterItem">
+                    <span>医生工号:</span>
+                    <input class="moduleItemInp" id="doctorId" type="text" placeholder="医生工号" autocomplete="off">
+                </span>
+                <span class="filterItem typeFilter clearfix dataSelectLight">
+                    <span class="fl">选择日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" readonly/></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" readonly/></span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+                <span class="export">导出</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 desc" code="totalNum">总数量</th>
+                        <th class="beHospitalId textCenter">已改善数量</th>
+                        <th class="beHospitalId textCenter" code="improveleNum">待改善数量</th>
+                        <th class="beHospitalId textCenter">改善率</th>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 86 - 0
src/html/dept/statisticsDetailDept.html

@@ -0,0 +1,86 @@
+<!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 qcListCopy">
+    <div class="partTitle">
+        <p class="titlePic"></p>
+    </div>
+    <div class="main-body">
+        <div class="filterBox">
+            <div class="clearfix">
+                    <span class="filterItem typeFilter deptListWrap">
+                        <span>科室:</span>
+                        <span class="selectDept" style="background: #eff0f9">全部</span>
+                        <!--<input type="text" class="selectDept canEditDept" value="全部">
+                        <ul class="deptList filterDropList"></ul>-->
+                    </span>
+                <span class="filterItem typeFilter">
+                        <span>病人住院序号:</span>
+                        <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入病人住院序号">
+                    </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-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="filterclear abnormalClear filterclearT">重置</span>
+                <span class="export">导出</span>
+            </div>
+            <a href="javascript:void(0);" class="filter-toggler" id="filterToggler">展开筛选</a>
+            <div class="toggle-item clearfix">
+                    <span class="filterItem typeFilter">
+                        <span>病人姓名:</span>
+                        <input class="patientNameInp" type="text" placeholder="请输入病人姓名">
+                    </span>
+                <span class="filterItem doctorFilter">
+                        <span>医生姓名:</span>
+                        <input class="doctorInp" type="text" disabled>
+                    </span>
+                <span class="filterItem doctorFilter">
+                        <span>医生工号:</span>
+                        <input class="doctorNumInp" type="text" disabled>
+                    </span>
+            </div>
+        </div>
+        <div class="overAuto">
+            <table class="qctable">
+                <thead>
+                <th class="moduleName" style="width: 65px;" code="level">病历等级</th>
+                <th class="beHospitalId textCenter" code="scoreRes">病历得分</th>
+                <th class="beHospitalId textCenter" code="behospitalCode">病人住院序号</th>
+                <th class="beHospitalId textCenter" code="fileCode">病案号</th>
+                <th class="beHospitalId textCenter" code="name">病人姓名</th>
+                <th class="beHospitalId textCenter" code="age">年龄</th>
+                <th class="beHospitalId textCenter desc" code="behospitalDate">入院日期</th>
+                <th class="beHospitalId textCenter" code="leaveHospitalDate">出院日期</th>
+                <th class="beHospitalId textCenter" code="behDoctorName">主管医生</th>
+                <th class="beHospitalId textCenter" code="behDeptName">科室</th>
+                <th class="beHospitalId textCenter" code="gradeTime">评分时间</th>
+                </thead>
+                <tbody class="tbody"></tbody>
+                <tfoot></tfoot>
+            </table>
+        </div>
+        <div class="pagination"></div>
+    </div>
+
+</div>
+</body>
+
+</html>

+ 72 - 0
src/html/dept/useStatisticsDept.html

@@ -0,0 +1,72 @@
+<!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 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="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <input type="text" class="selectDept canEditDept" style="background: #eff1f6;cursor: unset;" disabled value="全部">
+                    <!--<ul class="deptList filterDropList"></ul>-->
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>医师工号:</span>
+                    <input class="moduleItemInp" id="doctorNum" type="text" placeholder="医师工号" autocomplete="off">
+                </span>
+                <span class="filterItem">
+                    <span>医师姓名:</span>
+                    <input class="moduleItemInp" id="doctorName" type="text" placeholder="医师姓名" autocomplete="off">
+                </span>
+                <span class="filterItem typeFilter clearfix dataSelectLight">
+                    <span class="fl">选择日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" readonly/></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" readonly/></span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+                <span class="export">导出</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" code="singleModeNum">模块质控按钮点击数</th>
+                        <th class="beHospitalId textCenter desc" code="totalModeNum">全病历质控按钮点击数</th>
+
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 13 - 4
src/html/index.html

@@ -9,6 +9,8 @@
 </head>
 
 <script type="text/html" id="menuTmpl">
+    {{if isPlacefile==0&&(code=='YH-SJFX'||code=='YH-SJFXKS')}}
+    {{else}}
     {{if subMenuList.length}}
         <li class="list-1 ${code}"><p>${name}</p>
     {{else}}
@@ -16,9 +18,10 @@
             <li class="page ${code}" code="${code}">${name}
         {{/if}}
     {{/if}}
+        {{/if}}
         <ul>
             {{each subMenuList}}
-                {{if isPlacefile!=1&&code!='YH-KSZR-BLZK_XQ'&&code!='YH-ZKK-BLZK_XQ'&&code!='YH-ZKK-BASYHGLZB_XQ'&&code!='YH-ZKK-CYRSTJ'&&code!='YH-ZKK-ZKHCTJ'&&code!='YH-KSZR-BASYHGLZB_XQ'&&code!='YH-KSZR-ZKHCTJ_XQ'&&code!='YH-KSZR-ZMBLJCS_XQ'&&code!='YH-ZKK-ZMBLJCB'&&code!='YH-KSZR-CYRSTJ_XQ'}}
+                {{if isPlacefile!=1&&code!='YH-KSZR-BLZK_XQ'&&code!='YH-ZKK-BLZK_XQ'&&code!='YH-ZKK-BASYHGLZB_XQ'&&code!='YH-ZKK-CYRSTJ'&&code!='YH-ZKK-ZKHCTJ'&&code!='YH-KSZR-BASYHGLZB_XQ'&&code!='YH-KSZR-ZKHCTJ_XQ'&&code!='YH-KSZR-ZMBLJCS_XQ'&&code!='YH-ZKK-ZMBLJCB'&&code!='YH-KSZR-CYRSTJ_XQ'&&code!='YH-ZKK-LCZKSYTJ'&&code!='YH-ZKK-TMQXGSTJ'&&code!='YH-KSZR-TMQXGSTJ'}}
                     <!-- {{if code == 'YH-ZKK-YXBLJCB'}}
                         <li class="page" code="${code}">运行病历稽查表</li>
                     {{else}}
@@ -39,15 +42,18 @@
 </script>
 <script type="text/html" id="miniMenuTmpl">
     {{if showStatus}}
-    {{if subMenuList.length}}
-    <li class="list-1 ${code}">
+        {{if isPlacefile==0&&(code=='YH-SJFX'||code=='YH-SJFXKS')}}
         {{else}}
+            {{if subMenuList.length}}
+    <li class="list-1 ${code}">
+            {{else}}
     <li class="page ${code}" code="${code}">
+            {{/if}}
         {{/if}}
         {{if subMenuList.length}}
         <ul>
             {{each subMenuList}}
-                {{if isPlacefile!=1&&code!='YH-ZKK-BASYHGLZB_XQ'&&code!='YH-ZKK-CYRSTJ'&&code!='YH-ZKK-ZKHCTJ'&&code!='YH-KSZR-BASYHGLZB_XQ'&&code!='YH-KSZR-ZKHCTJ_XQ'&&code!='YH-KSZR-ZMBLJCS_XQ'&&code!='YH-ZKK-ZMBLJCB'&&code!='YH-KSZR-CYRSTJ_XQ'}}
+                {{if isPlacefile!=1&&code!='YH-ZKK-BASYHGLZB_XQ'&&code!='YH-ZKK-CYRSTJ'&&code!='YH-ZKK-ZKHCTJ'&&code!='YH-KSZR-BASYHGLZB_XQ'&&code!='YH-KSZR-ZKHCTJ_XQ'&&code!='YH-KSZR-ZMBLJCS_XQ'&&code!='YH-ZKK-ZMBLJCB'&&code!='YH-KSZR-CYRSTJ_XQ'&&code!='YH-ZKK-LCZKSYTJ'&&code!='YH-ZKK-TMQXGSTJ'&&code!='YH-KSZR-TMQXGSTJ'}}
                     <!-- {{if code == 'YH-ZKK-YXBLJCB'}}
                         <li class="page" code="${code}">运行病历稽查表</li>
                     {{else}}
@@ -96,6 +102,7 @@
                   <div class="title fl">
                       <!--<img src="../images/logo.png" alt="logo" />-->
                       <span class="subtitle">AI病案质控平台</span>
+                    
                       <span class="qiehuan"><img src="../images/qiehuan2.png" alt=""><i>切换运行质控</i></span>
                   </div>
                   <div class="login fr">
@@ -110,6 +117,8 @@
                   </div>
               </div>
               <iframe src="" frameborder="0" id="contentIframe"></iframe>
+             
+
           </div>
       </div>
     </div>

二進制
src/images/data-edit.png


二進制
src/images/data-edit_a.png


二進制
src/images/data-sys.png


二進制
src/images/data-sys_a.png


+ 6 - 1
src/js/allotCheckTask.js

@@ -881,7 +881,12 @@ function allotTask(flag){
             }
             toast("操作成功");
         }else{
-            toast(res.data.msg||'保存分配失败,请重试~');
+            const token = localStorage.getItem('accessToken');
+            if (!token && window.location.href.indexOf('login') == -1) {
+                //alert('无token判断,跳回登录')
+            } else {
+                toast(res.data.msg || '保存分配失败,请重试~');
+            }
         }
     }).catch((e) =>{
 

+ 16 - 1
src/js/api.js

@@ -193,7 +193,22 @@ const api = {
   qcResultShortXYPageByDept: '/consoleByDept/qcResultShortXYPageByDept',//湘雅医师合格率三级页面列表 科室
   qcResultShortXYPageExportDept: '/print/export/qcResultShortXYPageExportDept',//湘雅医师合格率三级页面导出 科室
   badLevelPageXYExportByDept: '/print/export/badLevelPageXYExportByDept',//湘雅医师合格率二级页面导出 科室
-} 
+  /*****湘雅三院-统计分析******/
+  getEntryDefectImprove:'/qc/analysis/getEntryDefectImprove', //条目缺陷改善率统计
+  getEntryDefectImproveByExport:'/qc/analysis/getEntryDefectImproveByExport',   //条目缺陷改善率统计-导出
+  getEntryDefectImproveInner:'/qc/analysis/getEntryDefectImproveInner',//条目缺陷改善率统计内页列表
+  getDefectImproveInnerByExport:'/qc/analysis/getDefectImproveInnerByExport', //条目缺陷改善率统计内页-导出
+  getEntryDefectImproveDept:'/qc/analysisDept/getEntryDefectImproveDept', //条目缺陷改善率统计(科室)
+  getEntryDefectImproveInnerDept:'/qc/analysisDept/getEntryDefectImproveInnerDept',//条目缺陷改善率统计(科室)内页列表
+  getDefectImproveInnerByDeptExport:'/qc/analysisDept/getDefectImproveInnerByDeptExport',//条目缺陷改善率统计(科室)内页-导出
+  getEntryDefectImproveByDeptExport:'/qc/analysisDept/getEntryDefectImproveByDeptExport',//条目缺陷改善率统计(科室)-导出
+  getQcClick:'/qc/analysis/getQcClick', //临床质控使用统计
+  getQcClickByExport:'/qc/analysis/getQcClickByExport',   //临床质控使用统计-导出
+  getQcClickDeptList:'/qc/analysis/getQcClickDeptList',		//临床质控使用统计科室列表
+  getQcClickDept:'/qc/analysis/getQcClickInnerPage',   //临床质控使用统计内页
+  getQcClickInnerPageByExport:'/qc/analysis/getQcClickInnerPageByExport',//临床质控使用统计内页-导出
+
+}
 const ywCheckApi = {
   addMedCheckInfo: '/qc/medCheckInfo/addMedCheckInfo',   //核查
   getAllotCheckList: '/qc/medCheckInfo/getCheckList', //分配核查任务列表

+ 60 - 53
src/js/checkTaskList.js

@@ -2,7 +2,7 @@ const $ = require('jquery');
 require("../css/checkTaskList.less");
 require('./modal.js');
 const { api, ywCheckApi } = require('./api.js')
-const { post, getCookie, getLogoParam, emptyBox,  listenScroll,getScoreTabList } = require('./utils.js')
+const { post, getCookie, getLogoParam, emptyBox, listenScroll, getScoreTabList } = require('./utils.js')
 require('./../resource/jquery-ui/jquery-ui.min.js');
 require('./../resource/jquery-ui/jquery-ui.min.css');
 const iconCalenBlue = require("./../images/icon_calen_blue.png")
@@ -17,13 +17,13 @@ $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
 $(".selectStatus").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
 $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
 
-let tabList = [],global_deptId = "",global_checkStatus = "",global_score='',global_level="",data_desc = ["jobDistributionTime"], data_asc = [];
+let tabList = [], global_deptId = "", global_checkStatus = "", global_score = '', global_level = "", data_desc = ["jobDistributionTime"], data_asc = [];
 let isPlacefile = getCookie('isPlacefile') || 1
 if (isPlacefile != 1) {
     data_desc = ["jobDistributionTime"]
 }
 
-$(function(){
+$(function () {
     $(window.parent.document).find(".modaltip").hide();//切换页面过快时toast隐藏
     $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
     $('.iconCalen').on("mouseenter", function (e) {
@@ -74,8 +74,8 @@ $(function(){
     };
     $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
 
-    const days = new Date().getDate()-1;
-    let startDate = "-"+days+"d",endDate=new Date();
+    const days = new Date().getDate() - 1;
+    let startDate = "-" + days + "d", endDate = new Date();
     //let endDate = new Date(),startDate = "-6d";
     $("#datepicker").datepicker({
         changeMonth: true,
@@ -90,7 +90,7 @@ $(function(){
     //getPageSet().then(res =>{
     $(".filter").click();   //初始查询
     //})
-//选择病历等级
+    //选择病历等级
     $('.selectLevel').on("click", function (e) {
         e.stopPropagation()
         $(".deptList ").css("display", "none")
@@ -107,11 +107,11 @@ $(function(){
         }
     })
 
-//选择核查状态
+    //选择核查状态
     $('.selectStatus').on("click", function (e) {
         e.stopPropagation()
         $(".scoreList").css("display", "none")
-        $(".levelList").css("display","none")
+        $(".levelList").css("display", "none")
         $(".deptList ").css("display", "none")
         $(".selectDept .arrow").attr("src", iconDown)
         $(".selectCheck .arrow").attr("src", iconDown)
@@ -126,13 +126,13 @@ $(function(){
     })
 
     //筛选分值选择
-    $('.selectScore').on("click", function(e){
+    $('.selectScore').on("click", function (e) {
         e.stopPropagation();
-        $(".deptList").css("display","none")
-        $(".levelList").css("display","none")
-        $(".selectDept .arrow").attr("src",iconDown)
-        $(".selectScore .arrow").attr("src",iconDown)
-        $(".scoreList ").css("display","block")
+        $(".deptList").css("display", "none")
+        $(".levelList").css("display", "none")
+        $(".selectDept .arrow").attr("src", iconDown)
+        $(".selectScore .arrow").attr("src", iconDown)
+        $(".scoreList ").css("display", "block")
     })
 
     //筛选
@@ -154,7 +154,7 @@ $(function(){
         clearFilter();
         getTabData(1)
     })
-    getScoreTabList((data)=>{rendeScoreList(data)},true)
+    getScoreTabList((data) => { rendeScoreList(data) }, true)
     getTabData(1)
     bindLeveldSelect()
     bindStatusdSelect()
@@ -187,7 +187,7 @@ $(function(){
     })
 
 
-//获取科室列表
+    //获取科室列表
     getDeptList()
 })
 
@@ -204,55 +204,55 @@ function hasData(data) {
     return false;
 }
 //列表获取筛选值
-function getFilterData(){
+function getFilterData() {
     const obj = {};
-    $(".filterBox input[code]").map((i,it)=>{
-        obj[$(it).attr("code")]=$(it).val()
+    $(".filterBox input[code]").map((i, it) => {
+        obj[$(it).attr("code")] = $(it).val()
     })
     return obj;
 }
 //重置筛选项
-function clearFilter(){
+function clearFilter() {
     $(".filterBox input").val("");
-    data_desc=["jobDistributionTime"];
+    data_desc = ["jobDistributionTime"];
     /*if(isPlacefile != 1){
         data_desc=["behospital_date"]
     }*/
-    data_asc=[];
+    data_asc = [];
     //默认日期为本月
-    const days = new Date().getDate()-1;
-    let startDate = "-"+days+"d",endDate=new Date();
-    $( "#datepicker" ).datepicker({
+    const days = new Date().getDate() - 1;
+    let startDate = "-" + days + "d", endDate = new Date();
+    $("#datepicker").datepicker({
         changeMonth: true,
         changeYear: true,
-        dateFormat:"yy-mm-dd",
-    }).datepicker( "setDate", startDate);
-    $( "#datepicker2" ).datepicker({
+        dateFormat: "yy-mm-dd",
+    }).datepicker("setDate", startDate);
+    $("#datepicker2").datepicker({
         changeMonth: true,
         changeYear: true,
-        dateFormat:"yy-mm-dd"
-    }).datepicker( "setDate",endDate);
+        dateFormat: "yy-mm-dd"
+    }).datepicker("setDate", endDate);
     $("th[code]").removeClass("asc desc")
     $("th[code='jobDistributionTime']").addClass('desc');
 
     $('.selectDept ').html('全部')
     $(".deptList").css("display", "none")
     $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
-    global_deptId="";
+    global_deptId = "";
 
     $('.selectLevel').html('全部')
     $(".levelList").css("display", "none")
     $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
-    global_level="";
+    global_level = "";
 
     $('.selectStatus').html('全部')
     $(".statusList").css("display", "none")
     $(".selectStatus").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
-    global_checkStatus="";
+    global_checkStatus = "";
 
     $('.selectScore i').html('全部')
     $(".scoreList").css("display", "none")
-    global_score='';
+    global_score = '';
 }
 function getTabData(activePage) {
     const filterData = getFilterData();
@@ -261,13 +261,13 @@ function getTabData(activePage) {
         asc: data_asc,     //升序
         desc: data_desc,       //降序
         size: 15,
-        current:activePage,
+        current: activePage,
         ...filterData,
-        checkJobTypes:global_score.trim()?[global_score]:[],
-        behDeptId:global_deptId.trim(),
-        status:global_checkStatus,
-        jobDistributionTimeStart:filterData.jobDistributionTimeStart+" 00:00:00",
-        jobDistributionTimeEnd:filterData.jobDistributionTimeEnd+" 23:59:59"
+        checkJobTypes: global_score.trim() ? [global_score] : [],
+        behDeptId: global_deptId.trim(),
+        status: global_checkStatus,
+        jobDistributionTimeStart: filterData.jobDistributionTimeStart + " 00:00:00",
+        jobDistributionTimeEnd: filterData.jobDistributionTimeEnd + " 23:59:59"
     }
     $('.pagination').html("")
     $('.tbody').html(emptyBox('努力加载中...', '', 15))
@@ -284,7 +284,13 @@ function getTabData(activePage) {
                 $('.pagination').html("")
             }
         } else {
-            $.alerModal({ "message": res.data.msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+            const token = localStorage.getItem('accessToken');
+            if (!token && window.location.href.indexOf('login') == -1) {
+                //alert('无token判断,跳回登录')
+            } else {
+                $.alerModal({ "message": res.data.msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+            }
+
         }
     }).catch((e) => {
 
@@ -310,43 +316,44 @@ function bindOrder() {
 }
 
 //来源筛选下拉
-function rendeScoreList(list){console.log(list)
+function rendeScoreList(list) {
+    console.log(list)
     const arr = Object.keys(list);
-    if(arr.length == 0){
+    if (arr.length == 0) {
         $('.scoreList').html("")
         return
     }
     let str = `<li class="scoreItem ellipsis" data-id=" " data-name="全部">全部</li>`;
-    for(let i = 0; i < arr.length; i++){
+    for (let i = 0; i < arr.length; i++) {
         str += `<li class="scoreItem ellipsis" data-id=${arr[i]} data-name=${list[arr[i]]}> ${list[arr[i]]}</li>`
     }
     $('.scoreList').html(str)
     bindScoreSelect()
 }
-function bindScoreSelect(){
-    $('.scoreItem').on("click",function(){
+function bindScoreSelect() {
+    $('.scoreItem').on("click", function () {
         const scoreItemName = $(this).attr("data-name")
         const scoreItemItemId = $(this).attr("data-id")
-        global_score =scoreItemItemId;
+        global_score = scoreItemItemId;
         $('.selectScore i').html(scoreItemName)
         $(".scoreList").css("display", "none")
     })
 }
 function renderTab(data) {
-    let str = ``,code="";
+    let str = ``, code = "";
     if (data.length === 0) {
         $('.tbody').html(emptyBox(null, 15))
         return;
     }
     const titles = $(".tabTitle th[code]");
-    for(let i = 0; i < data.length; i++){
+    for (let i = 0; i < data.length; i++) {
         const item = data[i]
 
         str += `
             <tr  data-index=${i}>`;
-        for(let i=0;i<titles.length;i++){
+        for (let i = 0; i < titles.length; i++) {
             code = $(titles[i]).attr('code');
-            str +=  `<td class="${code=='name'?'beHospitalId':''} textCenter"><span data-index=${i}>${ item[code] || "-"}<span></td>`
+            str += `<td class="${code == 'name' ? 'beHospitalId' : ''} textCenter"><span data-index=${i}>${item[code] || "-"}<span></td>`
         }
         str += "</tr>"
     }
@@ -364,12 +371,12 @@ function bindScoreDetail() {
         const name = tabList[index].name
         const age = tabList[index].age;
         const checkStatus = tabList[index].checkStatus
-        scoreDetail({id, age,name, hid:getCookie("hospitalid"),code:'YH-ZKHC-HCRWLB'})
+        scoreDetail({ id, age, name, hid: getCookie("hospitalid"), code: 'YH-ZKHC-HCRWLB' })
     });
 }
 function scoreDetail(obj) {
     const logoParam = getLogoParam();
-    window.open(`./qcScore.html?id=${obj.id}&age=${obj.age}&name=${obj.name}&hid=${obj.hid}&code=${obj.code}`+logoParam)
+    window.open(`./qcScore.html?id=${obj.id}&age=${obj.age}&name=${obj.name}&hid=${obj.hid}&code=${obj.code}` + logoParam)
 }
 //病历等级选择
 function bindLeveldSelect() {

+ 7 - 1
src/js/creatCheckTask.js

@@ -386,7 +386,13 @@ function getTabData(activePage) {
                 $('.pagination').html("")
             }
         } else {
-            toast(res.data.msg);
+            const token = localStorage.getItem('accessToken');
+            if (!token && window.location.href.indexOf('login') == -1) {
+                //alert('无token判断,跳回登录')
+            } else {
+                toast(res.data.msg);
+            }
+
         }
     }).catch((e) => {
 

+ 413 - 0
src/js/dataAnalysis/improveStatistics.js

@@ -0,0 +1,413 @@
+require('../mock')
+const $ = require('jquery');
+require("../../css/dataAnalysis/improveStatistics.less");
+
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,emptyBox,setDatePicker,getPickerDate,downloadExportedData,expJson,listenScroll} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+const loadingImg = require("../../images/loading.gif")
+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");
+//$(".selectCase").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+listenScroll()
+let isPlacefile = getCookie('isPlacefile')||1
+
+let deptName="",deptNameTemp="",caseName="",caseNameTemp="", behospitalCode="", behospitalCodeTemp="",deptId="",deptIdTemp="",caseId="",caseIdTemp="",entryName='',entryNameTemp='',
+  data_desc="totalNum",data_asc="";
+  let startDate="",startDateTemp = "";
+  let endDate="",endDateTemp = "";
+
+$(function() {
+  const  iconCalenBlue= require("../../images/icon_calen_blue.png")
+  const  iconCalenGrey= require("../../images/icon_calen_grey.png")
+  //获取科室列表
+  getDeptList()
+  getCaseList();
+  //日期控件事件绑定
+  $('.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()
+  })
+  $("#entryName").on("input", function(e){
+	const val = $(this).val().trim();
+	entryNameTemp = val
+  })
+  //日期默认当年
+  setDatePicker($("#datepicker"), $("#datepicker2"), 2);
+  startDate=startDateTemp=getPickerDate($("#datepicker"),1)
+  endDate=endDateTemp=getPickerDate($("#datepicker2"),2)
+  //初始列表数据获取
+  getTabData(1);
+  //导出事件绑定
+  $('.export').click(function(){
+	startDateTemp=getPickerDate($("#datepicker"),1)
+	endDateTemp=getPickerDate($("#datepicker2"),2)
+    const param={
+	  //"deptId": deptName=="全部"?"":deptId||"", //科室id
+	  "casesName": caseNameTemp,
+	  "entryName":entryNameTemp,
+	  "deptName": deptNameTemp=="全部"?"":deptNameTemp||"",
+	  "asc":data_asc,     //升序
+	  "desc":data_desc,       //降序
+	  "startDate":startDateTemp,
+	  "endDate":endDateTemp,
+	  current:1,
+	  size:500
+	};
+	if(startDateTemp > endDateTemp){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	expJson(api.getEntryDefectImproveByExport,param,{noPlacefile:true}).then(res =>{
+	  downloadExportedData(res.data,"条目缺陷改善统计"+startDateTemp.substr(0,10).replace(/\//g,'')+"-"+endDateTemp.substr(0,10).replace(/\//g,'')+".xls");
+	})
+  })
+  //给每一个标题绑定一个排序事件
+  $("th[code]").on("click",function(e){
+	const code=$(this).attr("code");
+	if(data_asc==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);
+  });
+  //重置
+  $(".abnormalClear").click(function(){
+	data_desc="totalNum"
+	data_asc=""
+	setDatePicker($("#datepicker"),$("#datepicker2"),"default");
+	startDate=startDateTemp=getPickerDate($("#datepicker"),1)
+	endDate=endDateTemp=getPickerDate($("#datepicker2"),2)
+	$("#entryName").val("");
+	$("th[code]").removeClass("desc asc");
+	$("th[code='totalNum']").addClass("desc");
+	behospitalCode =behospitalCodeTemp= ""
+	deptName = deptNameTemp = ""
+	deptId = deptIdTemp = ""
+	caseName=caseNameTemp="";
+	entryName=entryNameTemp="";
+	$(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+	$(".selectCase").attr({'title':"全部",'data-id':''}).val("全部")
+	getTabData(1)
+	//getDeptList()
+  })
+
+//查询
+  $(".filter").on("click", function(e){
+	startDate=getPickerDate($("#datepicker"),1)
+	endDate=getPickerDate($("#datepicker2"),2)
+	if(startDate > endDate){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	deptId = deptIdTemp;
+	deptName = deptNameTemp;
+	caseName =caseNameTemp;
+	entryName = entryNameTemp;
+	if(deptName===""){
+	  $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+	}
+	if(caseName===""){
+	  $(".selectCase").attr({'title':"全部",'data-id':''}).val("全部")
+	}
+	getTabData(1)
+  })
+  //点其他关闭弹窗
+  $(document).on("click", function(){
+	$(".caseList ").css("display", "none")
+	$(".deptList ").css("display","none")
+	$(".selectCase .arrow").attr("src",iconDown)
+	$(".selectDept .arrow").attr("src",iconDown)
+  })
+});
+
+function getFilterParam(current){
+  const param = {
+	//"isPlacefile":isPlacefile,
+	//"deptId": deptName=="全部"?"":deptId||"", //科室id
+	"casesName": caseName,
+	"entryName":entryName,
+	"deptName": deptName=="全部"?"":deptName||"",
+	"asc":data_asc,     //升序
+	"desc":data_desc,       //降序
+	"startDate":startDate,
+	"endDate":endDate,
+	current,
+	size:15
+  }
+  return param;
+}
+/*$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getLocal("trdObj"))
+    let lis = trdObj['YH-ZKK-TMQXGSTJ']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}*/
+function getTabData(activePage){
+    const param=getFilterParam(activePage);
+    if(param.start > param.end){
+        $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    }
+    $('.pagination').html("")
+    $('.tbody').html(emptyBox('努力加载中...','',1))
+    post(api.getEntryDefectImprove,param,{noPlacefile:true}).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            const detail = data.records||[];
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            renderTab(detail,detail.hospitalId,activePage);
+            if(totalNum>0){
+			  renderPagination(totalPage,Number(activePage),totalNum)
+			}
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+//表格dom渲染
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i];
+
+        str += `
+            <tr data-index=${i} data-deptid="${item.deptId}" data-dept="${item.deptName}" data-casesid="${item.entryId}" data-casesname="${item.entryName}">
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td >${item.deptName || "-"}</td>
+                <td >${item.casesName || "-"}</td>
+                <td >${item.entryName || "-"}</td>
+                <td><a class="goHomeDetail" data-type="0">${item.totalNum}</a></td>
+                <td><a class="goHomeDetail" data-type="1">${item.handleNum}</a></td>
+                <td><a class="goHomeDetail" data-type="2">${item.improveleNum}</a></td>
+                <td >${item.handleStr|| "-"}</td>
+            </tr>
+        `
+    }
+    $('.tbody').html(str?str:emptyBox())
+    $(".goHomeDetail").click(function(){
+        let casesId =  $(this).parents("tr").attr("data-casesid");
+	  	let casesName =  $(this).parents("tr").attr("data-casesname")
+        let deptName = $(this).parents("tr").attr("data-dept")
+        let deptId = $(this).parents("tr").attr("data-deptid")
+	  	let typeMark = $(this).attr("data-type")
+        $(parent.document).find("#contentIframe").attr("src", "statisticsDetail.html?deptName=" + deptName + "&deptId=" + deptId + "&casesId=" + casesId+"&defectName="+casesName+"&typeMark="+typeMark+"&startDate="+startDate+"&endDate="+endDate)
+    })
+}
+//模块下拉
+function getCaseList(val){
+  post(api.getQcCasesAll,{casesName:val=="全部"?"":val||""}).then(res =>{
+	if(res.data.code == '0'){
+	  const caseList = res.data.data||[]
+	  renderCaseList(caseList)
+	}else{
+	  renderCaseList([])
+	}
+  }).catch((e) =>{
+
+  })
+}
+
+//模块下拉框
+function renderCaseList(caseList){
+  if(caseList.length == 0){
+	$('.caseList').html("")
+	return
+  }
+  let str = `<li class="caseItem " data-id="" data-name="全部">全部</li>`
+  for(let i = 0; i < caseList.length; i++){
+	str += `<li class="caseItem ellipsis" title=${caseList[i].name} data-id=${caseList[i].id} data-name=${caseList[i].name}> ${caseList[i].name}</li>`
+  }
+  $('.caseList').html(str)
+  bindCaseSelect()
+}
+//模块选择
+function bindCaseSelect(){
+  $('.caseItem').on("mousedown",function(){
+	const caseItemName = $(this).attr("data-name")
+	const caseItemId = $(this).attr("data-id")
+	caseNameTemp=caseItemName=="全部"?"":caseItemName;
+	caseIdTemp =caseItemId||''
+	$('.selectCase').val(caseItemName)
+	$('.selectCase ').attr('title',caseItemName)
+	$(".caseList").css("display", "none")
+  })
+  $('.selectCase').on("click", function(e){
+	e.stopPropagation()
+  })
+  //科室下拉显示、选中事件
+  $('.selectCase').on("focus", function(e){
+	e.stopPropagation()
+	$(".caseList ").css("display","block")
+  })
+  $('.selectCase').on("blur", function(e){
+	$(".caseList ").css("display", "none")
+	$(".selectCase .arrow").attr("src",iconDown)
+  })
+  $('.selectCase').on("input", function(e){
+	let val = $(this).val().trim()
+	caseName = caseNameTemp = val
+	getCaseList(caseName)
+  })
+}
+//科室下拉
+function getDeptList(val){
+    post(api.getDeptList,{inputStr:val=="全部"?"":val||""}).then(res =>{
+        if(res.data.code == '0'){
+           const deptList = res.data.data||[]
+           rendeDeptList(deptList)
+        }else{
+            rendeDeptList([])
+        }
+    }).catch((e) =>{
+
+    })
+}
+//科室下拉框
+function rendeDeptList(deptList){
+    if(deptList.length == 0){
+      $('.deptList').html("")
+      return
+    }
+    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("mousedown",function(){
+	const deptItemName = $(this).attr("data-name")
+	const deptItemId = $(this).attr("data-id")
+	deptNameTemp=deptItemName=="全部"?"":deptItemName;
+	deptIdTemp =deptItemId||''
+	$('.selectDept').val(deptItemName)
+	$('.selectDept ').attr('title',deptItemName)
+	$(".deptList").css("display", "none")
+  })
+  $('.selectDept').on("click", function(e){
+	e.stopPropagation()
+  })
+  //科室下拉显示、选中事件
+  $('.selectDept').on("focus", function(e){
+	e.stopPropagation()
+	$(".deptList ").css("display","block")
+  })
+  $('.selectDept').on("blur", function(e){
+	$(".deptList ").css("display", "none")
+	$(".selectDept .arrow").attr("src",iconDown)
+  })
+  $('.selectDept').on("input", function(e){
+	let val = $(this).val().trim()
+	deptName = deptNameTemp = val
+	getDeptList(deptName)
+  })
+}
+/*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()
+}*/
+
+//分页渲染
+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)
+        }
+    })
+    
+}
+

+ 370 - 0
src/js/dataAnalysis/statisticsDetail.js

@@ -0,0 +1,370 @@
+const $ = require('jquery');
+require("../../css/dataAnalysis/statisticsDetail.less");
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,getLocal,getUrlArgObjectNew,emptyBox,downloadExportedData,expJson,getLogoParam,focusMenuItem,listenScroll,exportTimeLimit} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+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")
+let isPlacefile = getCookie('isPlacefile')||1
+
+let srcUrl = $("#contentIframe",parent.document).attr("src")
+let deptIdPram = getUrlArgObjectNew("deptId",srcUrl)||""
+let deptNamePram = getUrlArgObjectNew("deptName",srcUrl)||""
+let startDateParam = getUrlArgObjectNew("startDate",srcUrl)||""
+let endDateParam = getUrlArgObjectNew("endDate",srcUrl)||""
+let from = getUrlArgObjectNew("from",srcUrl)||""
+let typeMark= getUrlArgObjectNew("typeMark",srcUrl)||"";       //0-总数量,1-已改善数量,2-待改善数量
+let defectName = getUrlArgObjectNew("defectName",srcUrl)||"";
+let casesId = getUrlArgObjectNew("casesId",srcUrl)||"";
+let deptListDept = JSON.parse(getCookie("deptList"))||[]
+let doctorNameUrl = getUrlArgObjectNew("doctorName", srcUrl) || ""
+let currentPage;
+deptNameTemp = docName = doctorNameUrl
+listenScroll()
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="",
+	nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", deptName="", deptNameTemp="",doctorNum="",doctorNameTemp="",doctorNumTemp="",
+	data_desc="behospitalDate",data_asc="";
+//科室传参
+if(deptIdPram&&deptNamePram){
+  deptId=deptIdTemp = deptIdPram
+  deptName = deptNameTemp = deptNamePram
+  $('.selectDept').text(deptNamePram)
+  $('.selectDept ').attr('title',deptNamePram)
+}else{
+  deptId=deptListDept[0]&&deptListDept[0].deptId;
+  deptName=deptListDept[0]&&deptListDept[0].deptName;
+  deptNameTemp=deptListDept[0]&&deptListDept[0].deptName;
+  deptIdTemp=deptListDept[0]&&deptListDept[0].deptId;
+  $('.selectDept').val(deptName)
+}
+$(function() {
+  $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+  if(isPlacefile != 1){
+	data_desc="behospitalDate"
+  }
+  $(".partTitle .titlePic ").html(`<a class="consoleP" href="improveStatistics.html">条目缺陷改善统计 / </a>病历列表`)
+
+  $("#filterToggler").click(function(){
+	const text = $(this).text();
+	$(".toggle-item").slideToggle();
+	$(this).text(text==="收起筛选"?"展开筛选":"收起筛选").toggleClass("up");
+  });
+  $(".patientNumInp").on("input", function(e){
+	const val = $(this).val().trim();
+	let beCode=behospitalCode;
+	const patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/g;
+	beCode=val.replace(patrn,function(x){
+	  return "\\"+x;
+	});
+	behospitalCodeTemp = beCode
+  });
+  $(".patientNameInp").on("input", function(e){
+	const val = $(this).val().trim()
+	nameTemp = val
+  })
+  $("body").on("input",".doctorInp", function(e){
+	const val = $(this).val().trim()
+	doctorNameTemp = doctorNameUrl = val
+  })
+  $(".doctorNumInp").on("input", function(e){
+	const val = $(this).val().trim();
+	doctorNumTemp = val
+  })
+  $(document).on("click", function(){
+	$(".levelList ").css("display", "none")
+	$(".selectDept .arrow").attr("src",iconDown)
+	$(".selectLevel .arrow").attr("src",iconDown)
+  })
+  bindLeveldSelect();
+  getTabData(1);
+  //给每一个标题绑定一个排序事件
+  $("th[code]").on("click",function(e){
+	const code=$(this).attr("code");
+	if(data_asc==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);
+  });
+  //查询
+  $(".filter").on("click", function(e){
+	name = nameTemp
+	behospitalCode = behospitalCodeTemp
+	level = levelTemp==="全部"?"":levelTemp
+	deptId = deptIdTemp
+	deptName = deptNameTemp
+	doctorName = doctorNameTemp
+	doctorNum = doctorNumTemp
+	if(deptName == ""){
+	  $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+	}
+	getTabData(1)
+  });
+  //重置
+  $(".abnormalClear").on("click", function(e){
+	tabList = [];
+	name = "";
+	behospitalCode="";
+	level="";
+	nameTemp = "";
+	behospitalCodeTemp="";
+	levelTemp="";
+	deptNameTemp="";
+	deptIdTemp="";
+	doctorName=doctorNameUrl=deptNameTemp="";;
+	doctorNum="";
+	doctorNameTemp="";
+	doctorNumTemp="";
+	data_desc="behospitalDate"
+	data_asc="";
+	$('.patientNumInp').val('')
+	$('.patientNameInp').val('')
+	$('.doctorInp').val('')
+	$('.doctorNumInp').val('')
+
+	deptId = deptIdTemp = deptIdPram
+	deptName = deptNameTemp = deptNamePram
+	$('.selectDept').val(deptNamePram)
+	$('.selectDept ').attr('title',deptNamePram)
+	$(".deptList").css("display", "none")
+
+	$('.selectLevel').html('全部')
+	$(".levelList").css("display", "none")
+	$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+	$("th[code]").removeClass("asc desc")
+	$("th[code='behospitalDate']").addClass("desc");
+	getTabData(1)
+  })
+  //导出事件
+  $('.export').click(function(){
+	let param = {
+	  behospitalCode: behospitalCode,     //病历号
+	  typeMark:typeMark,     // 0-总数量,1-已改善数量,2-待改善数量
+	  patName: name, //病人姓名
+	  entryName: defectName,      //缺陷条目名称
+	  entryId:casesId,        //缺陷条目id
+	  deptId: deptId||"",     //科室id
+	  deptName: deptName == "全部" ? "":deptName||"",       //科室名称
+	  doctorId: doctorNum,    //医生id
+	  doctorName: doctorNameUrl,      //医生姓名
+	  level:level,//病历等级
+	  startDate: startDateParam, //选择日期--开始时间
+	  endDate: endDateParam, //选择日期--结束时间
+	  current:1,     //页码
+	  asc:data_asc,     //升序
+	  desc:data_desc,       //降序
+	  size: 500,       //每页显示条数
+	};
+	expJson(api.getDefectImproveInnerByExport , param,{noPlacefile:true}).then(res => {
+	  downloadExportedData(res.data, '条目缺陷改善统计详情'+startDateParam.substr(0,10).replace(/\//g,'')+"-"+endDateParam.substr(0,10).replace(/\//g,'') + ".xls")
+	})
+  })
+});
+
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getLocal("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 = {
+        behospitalCode: behospitalCode,     //病历号
+	    typeMark:typeMark,     // 0-总数量,1-已改善数量,2-待改善数量
+        patName: name, //病人姓名
+	    entryName: defectName,      //缺陷条目名称
+	    entryId:casesId,        //缺陷条目id
+	    deptId: deptId||"",     //科室id
+        deptName: deptName == "全部" ? "":deptName||"",       //科室名称
+        doctorId: doctorNum,    //医生id
+        doctorName: doctorNameUrl,      //医生姓名
+        level:level,//病历等级
+        startDate: startDateParam, //选择日期--开始时间
+        endDate: endDateParam, //选择日期--结束时间
+        current:activePage,     //页码
+        asc:data_asc,     //升序
+        desc:data_desc,       //降序
+        size: 15,       //每页显示条数
+    }
+    $('.pagination').html("")
+    $('.tbody').html(emptyBox('努力加载中...','',1))
+    return post(api.getEntryDefectImproveInner,param,{noPlacefile:true}).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            tabList = data.records;
+            const totalPage = data.pages;
+            const totalNum = data.total;
+            currentPage = activePage
+            renderTab(tabList,data.hospitalId);
+		  if(totalNum>0){
+			renderPagination(totalPage,Number(activePage),totalNum)
+		  }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+        console.log(999)
+    })
+}
+function getFilterParam(current){
+  const param = {
+	//"isPlacefile":isPlacefile,
+	"deptId": deptName=="全部"?"":deptId||"", //科室id
+	"deptName": deptName=="全部"?"":deptName||"",
+	"asc":data_asc,     //升序
+	"desc":data_desc,       //降序
+	"startDate":startDateParam,
+	"endDate":endDateParam,
+	current
+  }
+  return param;
+}
+function renderTab(data,hisId){
+    let str = ``
+    if(data.length===0){
+      $('.tbody').html(emptyBox(null,11))
+      return;
+    }
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `<tr  data-index=${i}>
+                <td >${item.level || "-"}</td>
+                <td >${item.scoreRes || "-"}</td>
+                <td >${item.behospitalCode || "-"}</td>
+                <td >${item.fileCode || "-"}</td>
+                <td >${item.name || "-"}</td>
+                <td >${item.age || "-"}</td>
+                <td >${item.behospitalDate || "-"}</td>
+                <td >${item.leaveHospitalDate || "-"}</td>
+                <td >${item.doctorName || "-"}</td>
+                <td >${item.behDeptName || "-"}</td>
+                <td >${item.gradeTime || "-"}</td>
+        str += </tr>`
+    }
+    $('.tbody').html(str)
+}
+
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    $(".checkList ").css("display", "none")
+    $(".selectCheck .arrow").attr("src",iconDown)
+    $(".qcSelectCheck .arrow").attr("src",iconDown)
+    $(".qcCheckList ").css("display", "none")
+    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)
+    }
+})
+
+//病历等级选择
+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="下拉">`)
+        $('.selectLevel').removeClass('unSelect')
+    })
+}
+
+
+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()
+}
+
+//分页渲染
+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)
+        }
+    })
+    
+}

+ 321 - 0
src/js/dataAnalysis/useStatistics.js

@@ -0,0 +1,321 @@
+require('../mock')
+const $ = require('jquery');
+// require("../css/partDetailControl.less");
+require("../../css/dataAnalysis/improveStatistics.less");
+
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,getLocal,getUrlArgObjectNew,emptyBox,setTitleTxt,setDatePicker,getPickerDate,downloadExportedData,expJson,initScroll,listenScroll} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+const iconDown= require("../../images/arrow_down.png")
+const loadingImg = require("../../images/loading.gif")
+const arrowLeft= require("../../images/arrow_left.png")
+
+const arrowRight = require("../../images/arrow_right.png");
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+listenScroll()
+let isPlacefile = getCookie('isPlacefile')||1
+
+let deptName="",deptNameTemp="", behospitalCode="", behospitalCodeTemp="",deptId="",deptIdTemp="",
+	data_desc="totalModeNum",data_asc="";
+let startDate="",startDateTemp = "";
+let endDate="",endDateTemp = "";
+
+$(function() {
+  const  iconCalenBlue= require("../../images/icon_calen_blue.png")
+  const  iconCalenGrey= require("../../images/icon_calen_grey.png")
+  //获取科室列表
+  getDeptList()
+  //日期控件事件绑定
+  $('.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()
+  })
+  //日期默认当年
+  setDatePicker($("#datepicker"), $("#datepicker2"), 2);
+  startDate=startDateTemp=getPickerDate($("#datepicker"),1)
+  endDate=endDateTemp=getPickerDate($("#datepicker2"),2)
+  //初始列表数据获取
+  getTabData(1);
+  //导出事件绑定
+  $('.export').click(function(){
+	startDateTemp=getPickerDate($("#datepicker"),1);
+	endDateTemp=getPickerDate($("#datepicker2"),2);
+	const param = {
+	  "deptName": deptNameTemp=="全部"?"":deptNameTemp||"",
+	  "asc":data_asc,     //升序
+	  "desc":data_desc,       //降序
+	  "startDate":startDateTemp,
+	  "endDate":endDateTemp
+	};
+	if(startDateTemp > endDateTemp){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	expJson(api.getQcClickByExport,param,{noPlacefile:true}).then(res =>{
+	  downloadExportedData(res.data,"临床质控使用统计"+startDateTemp.substr(0,10).replace(/\//g,'')+"-"+endDateTemp.substr(0,10).replace(/\//g,'')+".xls");
+	})
+  })
+  //给每一个标题绑定一个排序事件
+  $("th[code]").on("click",function(e){
+	const code=$(this).attr("code");
+	if(data_asc==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);
+  });
+  //重置
+  $(".abnormalClear").click(function(){
+	data_desc="totalModeNum"
+	data_asc=""
+	setDatePicker($("#datepicker"),$("#datepicker2"),"default");
+	startDate=getPickerDate($("#datepicker"),1);
+	endDate=getPickerDate($("#datepicker2"),2);
+	$("#casesName,#entryName").val("");
+	$("th[code]").removeClass("desc asc");
+	$("th[code='totalModeNum']").addClass("desc");
+	behospitalCode =behospitalCodeTemp= ""
+	deptName = deptNameTemp = ""
+	deptId = deptIdTemp = ""
+	$(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+	getTabData(1)
+	//getDeptList()
+  })
+
+//查询
+  $(".filter").on("click", function(e){
+	behospitalCode = behospitalCodeTemp
+	deptId = deptIdTemp
+	deptName = deptNameTemp
+	startDate=getPickerDate($("#datepicker"),1)
+	endDate=getPickerDate($("#datepicker2"),2)
+	if(startDate > endDate){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	if(deptName == ""){
+	  $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+
+	}
+	getTabData(1)
+  })
+});
+
+function getFilterParam(){
+  const param = {
+	//"isPlacefile":isPlacefile,
+	//"deptId": deptName=="全部"?"":deptId||"", //科室id
+	"deptName": deptName=="全部"?"":deptName||"",
+	"asc":data_asc,     //升序
+	"desc":data_desc,       //降序
+	"startDate":startDate,
+	"endDate":endDate
+  }
+  return param;
+}
+/*$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getLocal("trdObj"))
+    let lis = trdObj['YH-ZKK-TMQXGSTJ']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}*/
+function getTabData(activePage){
+  const param =getFilterParam();
+  if(param.start > param.end){
+    $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+    return
+  }
+  $('.pagination').html("")
+  $('.tbody').html(emptyBox('努力加载中...','',1))
+  post(api.getQcClick,param,{noPlacefile:true}).then(res =>{
+	if(res.data.code == '0'){
+	  const detail = res.data.data||[];
+	  /*const totalPage = data.pages;
+	  const totalNum = data.total;*/
+	  renderTab(detail,detail.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) =>{
+
+  })
+}
+//表格dom渲染
+function renderTab(data,hisId,activePage){
+  let str = ``
+  for(let i = 0; i < data.length; i++){
+	const item = data[i];
+
+	str += `
+            <tr data-index=${i} data-deptid="${item.deptId}" data-dept="${item.deptName}">
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td >${item.deptName || "-"}</td>
+                <td><a class="goHomeDetail">${item.singleModeNum}</a></td>
+                <td><a class="goHomeDetail">${item.totalModeNum}</a></td>
+            </tr>
+        `
+  }
+  $('.tbody').html(str?str:emptyBox())
+  $(".goHomeDetail").click(function(){
+	let deptName = $(this).parents("tr").attr("data-dept")
+	let deptId = $(this).parents("tr").attr("data-deptid")
+	$(parent.document).find("#contentIframe").attr("src", "useStatisticsDept.html?deptName=" + deptName + "&deptId=" + deptId+ "&startDate=" + startDate+ "&endDate=" + endDate)
+  })
+}
+function getDeptList(val){
+  post(api.getQcClickDeptList,{inputStr:val=="全部"?"":val||""}).then(res =>{
+	if(res.data.code == '0'){
+	  const deptList = res.data.data||[]
+	  rendeDeptList(deptList)
+	}else{
+	  rendeDeptList([])
+	}
+  }).catch((e) =>{
+
+  })
+}
+//科室下拉框
+function rendeDeptList(deptList){
+  if(deptList.length == 0){
+	$('.deptList').html("")
+	return
+  }
+  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("mousedown",function(){
+	const deptItemName = $(this).attr("data-name")
+	const deptItemId = $(this).attr("data-id")
+	deptNameTemp=deptItemName=="全部"?"":deptItemName;
+	deptIdTemp =deptItemId||''
+	$('.selectDept').val(deptItemName)
+	$('.selectDept ').attr('title',deptItemName)
+	$(".deptList").css("display", "none")
+  })
+  //科室下拉显示、选中事件
+  $('.selectDept').on("focus", function(e){
+	e.stopPropagation()
+	$(".deptList ").css("display","block")
+  })
+  $('.selectDept').on("blur", function(e){
+	$(".deptList ").css("display", "none")
+	$(".selectDept .arrow").attr("src",iconDown)
+  })
+  $('.selectDept').on("input", function(e){
+	let val = $(this).val().trim()
+	deptName = deptNameTemp = val
+	getDeptList(deptName)
+  })
+}
+/*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()
+}*/
+
+//分页渲染
+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)
+	}
+  })
+
+}
+

+ 431 - 0
src/js/dept/improveStatisticsDept.js

@@ -0,0 +1,431 @@
+require('../mock')
+const $ = require('jquery');
+require("../../css/dept/improveStatisticsDept.less");
+
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,emptyBox,setDatePicker,getPickerDate,downloadExportedData,expJson,listenScroll} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+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");
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+listenScroll()
+let isPlacefile = getCookie('isPlacefile')||1
+
+let deptName="",deptNameTemp="", behospitalCode="", behospitalCodeTemp="",deptId="",deptIdTemp="",caseName="",caseNameTemp="",caseId="",caseIdTemp="",entryName='',entryNameTemp='',
+	data_desc="totalNum",data_asc="",doctorId="",doctorIdTemp="",doctorName="",doctorNameTemp="";
+let startDateParam = "";
+let endDateParam = "";
+let _deptList=[];		//科室列表
+$(function() {
+  const  iconCalenBlue= require("../../images/icon_calen_blue.png")
+  const  iconCalenGrey= require("../../images/icon_calen_grey.png")
+  //获取科室列表
+  getDeptList()
+  getCaseList();
+  //日期控件事件绑定
+  $('.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()
+  })
+  $("#entryName").on("input", function(e){
+	const val = $(this).val().trim();
+	entryNameTemp = val
+  })
+  $("#doctorName").on("input", function(e){
+	const val = $(this).val().trim()
+	doctorNameTemp  = val
+  })
+  $("#doctorId").on("input", function(e){
+	const val = $(this).val().trim();
+	doctorIdTemp = val
+  })
+  //日期默认当年
+  setDatePicker($("#datepicker"), $("#datepicker2"),2);
+  startDateParam=getPickerDate($("#datepicker"),1)
+  endDateParam=getPickerDate($("#datepicker2"),2)
+
+  //导出事件绑定
+  $('.export').click(function(){
+	//const param = getFilterParam();
+	const startDate = getPickerDate($("#datepicker"),1);
+	const endDate = getPickerDate($("#datepicker2"),2);
+	const param = {
+	  //"isPlacefile":isPlacefile,
+	  "deptId": deptNameTemp=="全部"?"":deptIdTemp||"", //科室id
+	  "casesName": caseNameTemp,
+	  "entryName":$("#entryName").val(),
+	  "deptName": deptNameTemp=="全部"?"":deptNameTemp||"",
+	  "asc":data_asc,     //升序
+	  "desc":data_desc,       //降序
+	  "startDate":startDate,
+	  "endDate":endDate,
+	  "doctorName":$("#doctorName").val(),
+	  "doctorId":$("#doctorId").val(),
+	  current:1,
+	  size:500
+	};
+	if(startDate > endDate){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	expJson(api.getEntryDefectImproveByDeptExport,param,{noPlacefile:true}).then(res =>{
+	  downloadExportedData(res.data,"条目缺陷改善统计(科室)"+startDate.substr(0,10).replace(/\//g,'')+"-"+endDate.substr(0,10).replace(/\//g,'')+".xls");
+	})
+  })
+  //给每一个标题绑定一个排序事件
+  $("th[code]").on("click",function(e){
+	const code=$(this).attr("code");
+	if(data_asc==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);
+  });
+  //重置
+  $(".abnormalClear").click(function(){
+	data_desc="totalNum"
+	data_asc=""
+	setDatePicker($("#datepicker"),$("#datepicker2"),2);
+	startDateParam=getPickerDate($("#datepicker"),1)
+	endDateParam=getPickerDate($("#datepicker2"),2)
+	$("#entryName,#doctorId,#doctorName").val("");
+	$("th[code]").removeClass("desc asc");
+	$("th[code='totalNum']").addClass("desc");
+	behospitalCode =behospitalCodeTemp= ""
+	deptName = deptNameTemp = ""
+	deptId = deptIdTemp = ""
+	caseName=caseNameTemp="";
+	entryName=entryNameTemp="";
+	doctorId=doctorIdTemp=""
+	doctorName=doctorNameTemp=""
+	$(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+	$(".selectCase").attr({'title':"全部",'data-id':''}).val("全部")
+	getDeptList()
+  })
+
+//查询
+  $(".filter").on("click", function(e){
+	startDateParam=getPickerDate($("#datepicker"),1)
+	endDateParam=getPickerDate($("#datepicker2"),2)
+	if(startDateParam > endDateParam){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	deptId = deptIdTemp;
+	deptName = deptNameTemp;
+	caseName=caseNameTemp;
+	entryName=entryNameTemp;
+	doctorId=doctorIdTemp;
+	doctorName=doctorNameTemp;
+	if(caseName===""){
+	  $(".selectCase").attr({'title':"全部",'data-id':''}).val("全部")
+	}
+	getTabData(1)
+  })
+});
+
+function getFilterParam(current){
+  const param = {
+	"isPlacefile":isPlacefile,
+	"deptId": deptName=="全部"?"":deptId||"", //科室id
+	"casesName": caseName,
+	"entryName":entryName,
+	"deptName": deptName=="全部"?"":deptName||"",
+	"asc":data_asc,     //升序
+	"desc":data_desc,       //降序
+	"startDate":startDateParam,
+	"endDate":endDateParam,
+	"doctorName":doctorName,
+	"doctorId":doctorId,
+	current,
+	size:15
+  }
+  return param;
+}
+/*$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getLocal("trdObj"))
+    let lis = trdObj['YH-ZKK-TMQXGSTJ']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}*/
+function getTabData(activePage){
+  const param=getFilterParam(activePage);
+  if(param.startDate > param.endDate){
+	$.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	return
+  }
+  $('.pagination').html("")
+  $('.tbody').html(emptyBox('努力加载中...','',1))
+  post(api.getEntryDefectImproveDept,param,{noPlacefile:true}).then(res =>{
+	if(res.data.code == '0'){
+	  const data = res.data.data;
+	  const detail = data.records||[];
+	  const totalPage = data.pages;
+	  const totalNum = data.total;
+	  renderTab(detail,detail.hospitalId,activePage);
+	  if(totalNum>0){
+		renderPagination(totalPage,Number(activePage),totalNum)
+	  }
+	}else{
+	  $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	}
+  }).catch((e) =>{
+
+  })
+}
+//表格dom渲染
+function renderTab(data,hisId,activePage){
+  let str = ``
+  for(let i = 0; i < data.length; i++){
+	const item = data[i];
+
+	str += `
+            <tr data-index=${i} 
+            	data-deptid="${item.deptId}" 
+            	data-dept="${item.deptName}" 
+            	data-casesid="${item.entryId}" 
+            	data-casesname="${item.entryName}"
+            	data-doctorName="${item.doctorName}"
+            	data-doctorId="${item.doctorId}">
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td >${item.deptName || "-"}</td>
+                <td >${item.casesName || "-"}</td>
+                <td >${item.entryName || "-"}</td>
+                <td >${item.doctorName || "-"}</td>
+                <td >${item.doctorId || "-"}</td>
+                <td><a class="goHomeDetail" data-type="0">${item.totalNum}</a></td>
+                <td><a class="goHomeDetail" data-type="1">${item.handleNum}</a></td>
+                <td><a class="goHomeDetail" data-type="2">${item.improveleNum}</a></td>
+                <td >${item.handleStr|| "-"}</td>
+            </tr>
+        `
+  }
+  $('.tbody').html(str?str:emptyBox())
+  $(".goHomeDetail").click(function(){
+	let casesId =  $(this).parents("tr").attr("data-casesid");
+	let casesName =  $(this).parents("tr").attr("data-casesname");
+	let deptName = $(this).parents("tr").attr("data-dept");
+	let deptId = $(this).parents("tr").attr("data-deptid");
+	let doctorName = $(this).parents("tr").attr("data-doctorName");
+	let doctorId = $(this).parents("tr").attr("data-doctorId");
+	let typeMark = $(this).attr("data-type")
+	$(parent.document).find("#contentIframe").attr("src", "statisticsDetailDept.html?deptName=" + deptName + "&deptId=" + deptId +"&doctorName="+doctorName+"&doctorId="+doctorId+ "&casesId=" + casesId+"&defectName="+casesName+"&typeMark="+typeMark+"&startDate="+startDateParam+"&endDate="+endDateParam)
+  })
+}
+//模块下拉
+function getCaseList(val){
+  post(api.getQcCasesAll,{casesName:val=="全部"?"":val||""}).then(res =>{
+	if(res.data.code == '0'){
+	  const caseList = res.data.data||[]
+	  renderCaseList(caseList)
+	}else{
+	  renderCaseList([])
+	}
+  }).catch((e) =>{
+
+  })
+}
+
+//模块下拉框
+function renderCaseList(caseList){
+  if(caseList.length == 0){
+	$('.caseList').html("")
+	return
+  }
+  let str = `<li class="caseItem " data-id="" data-name="全部">全部</li>`
+  for(let i = 0; i < caseList.length; i++){
+	str += `<li class="caseItem ellipsis" title=${caseList[i].name} data-id=${caseList[i].id} data-name=${caseList[i].name}> ${caseList[i].name}</li>`
+  }
+  $('.caseList').html(str)
+  bindCaseSelect()
+}
+//模块选择
+function bindCaseSelect(){
+  $('.caseItem').on("mousedown",function(){
+	const caseItemName = $(this).attr("data-name")
+	const caseItemId = $(this).attr("data-id")
+	caseNameTemp=caseItemName=="全部"?"":caseItemName;
+	caseIdTemp =caseItemId||''
+	$('.selectCase').val(caseItemName)
+	$('.selectCase ').attr('title',caseItemName)
+	$(".caseList").css("display", "none")
+  })
+  $('.selectCase').on("click", function(e){
+	e.stopPropagation()
+  })
+  //科室下拉显示、选中事件
+  $('.selectCase').on("focus", function(e){
+	e.stopPropagation()
+	$(".caseList ").css("display","block")
+  })
+  $('.selectCase').on("blur", function(e){
+	$(".caseList ").css("display", "none")
+	$(".selectCase .arrow").attr("src",iconDown)
+  })
+  $('.selectCase').on("input", function(e){
+	let val = $(this).val().trim()
+	caseName = caseNameTemp = val
+	getCaseList(caseName)
+  })
+}
+//科室下拉
+function getDeptList(){
+  post(api.getDept,{}).then(res =>{
+	if(res.data.code == '0'){
+	  _deptList = res.data.data||[]
+	  rendeDeptList(_deptList)
+	}else{
+	  rendeDeptList([])
+	}
+	getTabData(1)
+  }).catch((e) =>{
+
+  })
+}
+//科室下拉框
+function rendeDeptList(deptList){
+  if(deptList.length == 0){
+	$('.deptList').html("")
+	return
+  }
+  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>`
+  }
+  $('.deptList').html(str)
+  $(".selectDept").text(deptList[0].deptName).append(`<img class="arrow" src=${iconDown} alt="下拉">`);
+  deptName=deptNameTemp=deptList[0].deptName;
+  deptId=deptIdTemp=deptList[0].deptId;
+  bindDeptSelect()
+}
+//科室选择
+function bindDeptSelect(){
+  $('.deptItem').on("mousedown",function(){
+	const deptItemName = $(this).attr("data-name")
+	const deptItemId = $(this).attr("data-id")
+	deptNameTemp=deptItemName;
+	deptIdTemp =deptItemId||''
+	$('.selectDept').text(deptItemName).append(`<img class="arrow" src=${iconDown} alt="下拉">`);
+	$('.selectDept ').attr('title',deptItemName)
+	$(".deptList").css("display", "none")
+  })
+  //科室下拉显示、选中事件
+  $('.selectDept').on("click", function(e){
+	e.stopPropagation()
+	if($(".deptList:visible").length>0){
+	  $(".deptList").css("display", "none")
+	  $(".selectDept .arrow").attr("src",iconDown)
+	}else{
+	  $(".deptList").css("display","block")
+	  $(".selectDept .arrow").attr("src",iconUp)
+	}
+  })
+  /*$('.selectDept').on("blur", function(e){
+	$(".deptList ").css("display", "none")
+	$(".selectDept .arrow").attr("src",iconDown)
+  })*/
+}
+/*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()
+}*/
+
+//分页渲染
+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)
+	}
+  })
+
+}
+

文件差異過大導致無法顯示
+ 583 - 577
src/js/dept/qcListOutHospitalDept.js


+ 358 - 0
src/js/dept/statisticsDetailDept.js

@@ -0,0 +1,358 @@
+const $ = require('jquery');
+require("../../css/dept/statisticsDetailDept.less");
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,getLocal,getUrlArgObjectNew,emptyBox,downloadExportedData,expJson,getLogoParam,focusMenuItem,listenScroll,exportTimeLimit} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+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")
+let isPlacefile = getCookie('isPlacefile')||1
+
+let srcUrl = $("#contentIframe",parent.document).attr("src")
+let deptIdPram = getUrlArgObjectNew("deptId",srcUrl)||""
+let deptNamePram = getUrlArgObjectNew("deptName",srcUrl)||""
+let startDateParam = getUrlArgObjectNew("startDate",srcUrl)||""
+let endDateParam = getUrlArgObjectNew("endDate",srcUrl)||""
+let typeMark= getUrlArgObjectNew("typeMark",srcUrl)||"";       //0-总数量,1-已改善数量,2-待改善数量
+let defectName = getUrlArgObjectNew("defectName",srcUrl)||"";
+let casesId = getUrlArgObjectNew("casesId",srcUrl)||"";
+let deptListDept = JSON.parse(getCookie("deptList"))||[]
+let doctorNameParam = getUrlArgObjectNew("doctorName", srcUrl) || ""
+let doctorNumParam = getUrlArgObjectNew("doctorId", srcUrl) || ""
+$('.doctorInp').val(doctorNameParam)
+$('.doctorNumInp').val(doctorNumParam)
+let currentPage;
+listenScroll()
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="",
+	nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="",  deptName="", deptNameTemp="",
+	data_desc="behospitalDate",data_asc="";
+//科室传参
+if(deptIdPram&&deptNamePram){
+  deptId=deptIdTemp = deptIdPram
+  deptName = deptNameTemp = deptNamePram
+  $('.selectDept').text(deptNamePram)
+  $('.selectDept ').attr('title',deptNamePram)
+}else{
+  deptId=deptListDept[0]&&deptListDept[0].deptId;
+  deptName=deptListDept[0]&&deptListDept[0].deptName;
+  deptNameTemp=deptListDept[0]&&deptListDept[0].deptName;
+  deptIdTemp=deptListDept[0]&&deptListDept[0].deptId;
+  $('.selectDept').val(deptName)
+}
+$(function() {
+  $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+  if(isPlacefile != 1){
+	data_desc="behospitalDate"
+  }
+  $(".partTitle .titlePic ").html(`<a class="consoleP" href="improveStatisticsDept.html">条目缺陷改善统计 / </a>病历列表`)
+
+  $("#filterToggler").click(function(){
+	const text = $(this).text();
+	$(".toggle-item").slideToggle();
+	$(this).text(text==="收起筛选"?"展开筛选":"收起筛选").toggleClass("up");
+  });
+  $(".patientNumInp").on("input", function(e){
+	const val = $(this).val().trim();
+	let beCode=behospitalCode;
+	const patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/g;
+	beCode=val.replace(patrn,function(x){
+	  return "\\"+x;
+	});
+	behospitalCodeTemp = beCode
+  });
+  $(".patientNameInp").on("input", function(e){
+	const val = $(this).val().trim()
+	nameTemp = val
+  })
+
+  $(document).on("click", function(){
+	$(".levelList ").css("display", "none")
+	$(".selectDept .arrow").attr("src",iconDown)
+	$(".selectLevel .arrow").attr("src",iconDown)
+  })
+  bindLeveldSelect();
+  getTabData(1);
+  //给每一个标题绑定一个排序事件
+  $("th[code]").on("click",function(e){
+	const code=$(this).attr("code");
+	if(data_asc==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);
+  });
+  //查询
+  $(".filter").on("click", function(e){
+	name = nameTemp
+	behospitalCode = behospitalCodeTemp
+	level = levelTemp==="全部"?"":levelTemp
+	deptId = deptIdTemp
+	deptName = deptNameTemp
+	if(deptName == ""){
+	  $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+	}
+	getTabData(1)
+  });
+  //重置
+  $(".abnormalClear").on("click", function(e){
+	tabList = [];
+	name = "";
+	behospitalCode="";
+	level="";
+	nameTemp = "";
+	behospitalCodeTemp="";
+	levelTemp="";
+	deptNameTemp="";
+	deptIdTemp="";
+	data_desc="behospitalDate"
+	data_asc="";
+	$('.patientNumInp').val('')
+	$('.patientNameInp').val('')
+	$('.doctorInp').val(doctorNameParam)
+	$('.doctorNumInp').val(doctorNumParam)
+
+	deptId = deptIdTemp = deptIdPram
+	deptName = deptNameTemp = deptNamePram
+	$('.selectDept').val(deptNamePram)
+	$('.selectDept ').attr('title',deptNamePram)
+	$(".deptList").css("display", "none")
+
+	$('.selectLevel').html('全部')
+	$(".levelList").css("display", "none")
+	$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+	$("th[code]").removeClass("asc desc")
+	$("th[code='behospitalDate']").addClass("desc");
+	getTabData(1)
+  })
+  //导出事件
+  $('.export').click(function(){
+	let param = {
+	  behospitalCode: behospitalCode,     //病历号
+	  typeMark:typeMark,     // 0-总数量,1-已改善数量,2-待改善数量
+	  patName: name, //病人姓名
+	  entryName: defectName,      //缺陷条目名称
+	  entryId:casesId,        //缺陷条目id
+	  deptId: deptId||"",     //科室id
+	  deptName: deptName == "全部" ? "":deptName||"",       //科室名称
+	  doctorId: doctorNumParam,    //医生id
+	  doctorName: doctorNameParam,      //医生姓名
+	  level:level,//病历等级
+	  startDate: startDateParam, //选择日期--开始时间
+	  endDate: endDateParam, //选择日期--结束时间
+	  current:1,     //页码
+	  asc:data_asc,     //升序
+	  desc:data_desc,       //降序
+	  size: 500,       //每页显示条数
+	};
+	expJson(api.getDefectImproveInnerByDeptExport , param,{noPlacefile:true}).then(res => {
+	  downloadExportedData(res.data, '条目缺陷改善统计详情'+startDateParam.substr(0,10).replace(/\//g,'')+"-"+endDateParam.substr(0,10).replace(/\//g,'') + ".xls")
+	})
+  })
+});
+
+//判断有无某一权限
+function hasData(data){
+  let trdObj = JSON.parse(getLocal("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 = {
+	behospitalCode: behospitalCode,     //病历号
+	typeMark:typeMark,     // 0-总数量,1-已改善数量,2-待改善数量
+	patName: name, //病人姓名
+	entryName: defectName,      //缺陷条目名称
+	entryId:casesId,        //缺陷条目id
+	deptId: deptId||"",     //科室id
+	deptName: deptName == "全部" ? "":deptName||"",       //科室名称
+	doctorId: doctorNumParam,    //医生id
+	doctorName: doctorNameParam,      //医生姓名
+	level:level,//病历等级
+	startDate: startDateParam, //选择日期--开始时间
+	endDate: endDateParam, //选择日期--结束时间
+	current:activePage,     //页码
+	asc:data_asc,     //升序
+	desc:data_desc,       //降序
+	size: 15,       //每页显示条数
+  }
+  $('.pagination').html("")
+  $('.tbody').html(emptyBox('努力加载中...','',1))
+  return post(api.getEntryDefectImproveInnerDept,param,{noPlacefile:true}).then(res =>{
+	if(res.data.code == '0'){
+	  const data = res.data.data;
+	  tabList = data.records;
+	  const totalPage = data.pages;
+	  const totalNum = data.total;
+	  currentPage = activePage
+	  renderTab(tabList,data.hospitalId);
+	  if(totalNum>0){
+		renderPagination(totalPage,Number(activePage),totalNum)
+	  }
+	}else{
+	  $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	}
+  }).catch((e) =>{
+	console.log(999)
+  })
+}
+function getFilterParam(current){
+  const param = {
+	//"isPlacefile":isPlacefile,
+	"deptId": deptName=="全部"?"":deptId||"", //科室id
+	"deptName": deptName=="全部"?"":deptName||"",
+	"asc":data_asc,     //升序
+	"desc":data_desc,       //降序
+	"startDate":startDateParam,
+	"endDate":endDateParam,
+	current
+  }
+  return param;
+}
+function renderTab(data,hisId){
+  let str = ``
+  if(data.length===0){
+	$('.tbody').html(emptyBox(null,11))
+	return;
+  }
+  for(let i = 0; i < data.length; i++){
+	const item = data[i]
+	str += `<tr  data-index=${i}>
+                <td >${item.level || "-"}</td>
+                <td >${item.scoreRes || "-"}</td>
+                <td >${item.behospitalCode || "-"}</td>
+                <td >${item.fileCode || "-"}</td>
+                <td >${item.name || "-"}</td>
+                <td >${item.age || "-"}</td>
+                <td >${item.behospitalDate || "-"}</td>
+                <td >${item.leaveHospitalDate || "-"}</td>
+                <td >${item.doctorName || "-"}</td>
+                <td >${item.behDeptName || "-"}</td>
+                <td >${item.gradeTime || "-"}</td>
+        str += </tr>`
+  }
+  $('.tbody').html(str)
+}
+
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+  e.stopPropagation()
+  $(".deptList ").css("display", "none")
+  $(".selectDept .arrow").attr("src",iconDown)
+  $(".checkList ").css("display", "none")
+  $(".selectCheck .arrow").attr("src",iconDown)
+  $(".qcSelectCheck .arrow").attr("src",iconDown)
+  $(".qcCheckList ").css("display", "none")
+  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)
+  }
+})
+
+//病历等级选择
+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="下拉">`)
+	$('.selectLevel').removeClass('unSelect')
+  })
+}
+
+
+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()
+}
+
+//分页渲染
+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)
+	}
+  })
+
+}

+ 265 - 0
src/js/dept/useStatisticsDept.js

@@ -0,0 +1,265 @@
+require('../mock')
+const $ = require('jquery');
+// require("../css/partDetailControl.less");
+require("../../css/dataAnalysis/improveStatistics.less");
+
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,getUrlArgObjectNew,emptyBox,setDatePicker,getPickerDate,downloadExportedData,expJson,listenScroll} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+const arrowLeft= require("../../images/arrow_left.png")
+
+const arrowRight = require("../../images/arrow_right.png");
+listenScroll()
+let isPlacefile = getCookie('isPlacefile')||1
+
+let deptName="",deptNameTemp="", behospitalCode="", behospitalCodeTemp="",deptId="",deptIdTemp="",doctorName="",doctorId="",
+	data_desc=["totalModeNum"],data_asc=[];
+let srcUrl = $("#contentIframe",parent.document).attr("src")
+let deptIdParam = getUrlArgObjectNew("deptId",srcUrl)||""
+let deptNameParam = getUrlArgObjectNew("deptName",srcUrl)||""
+let startDateParam = getUrlArgObjectNew("startDate",srcUrl)||""
+let endDateParam = getUrlArgObjectNew("endDate",srcUrl)||""
+
+$(function() {
+  const  iconCalenBlue= require("../../images/icon_calen_blue.png")
+  const  iconCalenGrey= require("../../images/icon_calen_grey.png")
+  //日期控件事件绑定
+  $('.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()
+  })
+  //日期默认传参/当年
+  if(startDateParam){
+	const startDate = new Date(startDateParam);
+	const endDate =  new Date(endDateParam);
+	setDatePicker($("#datepicker"),$("#datepicker2"),"",startDate,endDate);
+  }else{
+	setDatePicker($("#datepicker"), $("#datepicker2"), 1);
+  }
+  //父页面传参
+  if(deptIdParam){
+	deptId =deptIdTemp=deptIdParam;
+	deptName=deptNameTemp=deptNameParam;
+	$(".selectDept").val(deptNameParam).attr("title",deptNameParam);
+	$(".partTitle .titlePic ").html(`<a class="consoleP" href="useStatistics.html">临床质控使用统计 / </a>科室使用详情`);
+  }
+
+  //初始列表数据获取
+  getTabData(1);
+  //导出事件绑定
+  $('.export').click(function(){
+	const param = getFilterParam();
+	if(param.startDate > param.endDate){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	expJson(api.getQcClickInnerPageByExport,param,{noPlacefile:true}).then(res =>{
+	  downloadExportedData(res.data,"临床质控使用统计详情"+startDateParam.substr(0,10).replace(/\//g,'')+"-"+endDateParam.substr(0,10).replace(/\//g,'')+".xls");
+	})
+  })
+  //给每一个标题绑定一个排序事件
+  $("th[code]").on("click",function(e){
+	const code=$(this).attr("code");
+	if(data_asc==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);
+  });
+  //重置
+  $(".abnormalClear").click(function(){
+	data_desc=['totalModeNum']
+	data_asc=[]
+	setDatePicker($("#datepicker"),$("#datepicker2"),"",startDateParam,endDateParam);
+	$("#doctorNum,#doctorName").val("");
+	$("th[code]").removeClass("desc asc");
+	$("th[code='totalModeNum']").addClass("desc");
+	behospitalCode =behospitalCodeTemp= ""
+	deptName = deptNameTemp = deptNameParam
+	deptId = deptIdTemp = deptIdParam
+	doctorId = "";
+	doctorName = "";
+	getTabData(1)
+  })
+
+//查询
+  $(".filter").on("click", function(e){
+	let startDate=getPickerDate($("#datepicker"),1)
+	let endDate=getPickerDate($("#datepicker2"),2)
+	if(startDate > endDate){
+	  $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	  return
+	}
+	deptId = deptIdTemp;
+	deptName = deptNameTemp;
+	doctorId = $("#doctorNum").val().trim();
+	doctorName = $("#doctorName").val().trim();
+	getTabData(1)
+  })
+});
+
+function getFilterParam(current){
+  let startDate=getPickerDate($("#datepicker"),1)
+  let endDate=getPickerDate($("#datepicker2"),2)
+  const param = {
+	//"isPlacefile":isPlacefile,
+	"deptId": deptId=="null"?"":deptId||"", //科室id
+	"deptName": deptName=="全部"||deptName=="全院"?"":deptName||"",
+    "doctorId":doctorId,
+    "doctorName":doctorName,
+	"asc":data_asc,     //升序
+	"desc":data_desc,       //降序
+	"startDate":startDate,
+	"endDate":endDate,
+	current,
+	size:15
+  }
+  return param;
+}
+/*$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getLocal("trdObj"))
+    let lis = trdObj['YH-ZKK-TMQXGSTJ']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}*/
+function getTabData(activePage){
+  const param = getFilterParam(activePage);
+  $('.pagination').html("")
+  $('.tbody').html(emptyBox('努力加载中...','',1))
+  post(api.getQcClickDept,param,{noPlacefile:true}).then(res =>{
+	if(res.data.code == '0'){
+	  const data = res.data.data;
+	  const detail =data.records||[];
+	  const totalPage = data.pages;
+	  const totalNum = data.total;
+	  renderTab(detail,detail.hospitalId,activePage);
+	  if(totalNum>0){
+		renderPagination(totalPage,Number(activePage),totalNum)
+	  }
+	}else{
+	  $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+	}
+  }).catch((e) =>{
+
+  })
+}
+//表格dom渲染
+function renderTab(data,hisId,activePage){
+  let str = ``
+  for(let i = 0; i < data.length; i++){
+	const item = data[i];
+
+	str += `
+            <tr data-index=${i} data-deptid="${item.deptId}" data-dept="${item.deptName}">
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td >${item.deptName || "-"}</td>
+                <td >${item.doctorId || "-"}</td>
+                <td >${item.doctorName || "-"}</td>
+                <td>${item.singleModeNum}</td>
+                <td>${item.totalModeNum}</td>
+            </tr>
+        `
+  }
+  $('.tbody').html(str?str:emptyBox())
+}
+
+/*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()
+}*/
+
+//分页渲染
+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)
+	}
+  })
+
+}
+

+ 88 - 28
src/js/index.js

@@ -10,8 +10,19 @@ const openEye = require("./../images/open-eye.png")
 const closeEye = require("./../images/close-eye.png")
 const adLogo = require("../images/adlogo.png")
 
-const { api } = require('./api.js')
-const { post, pageMap, delCookie, setCookie, setLocal, getCookie, focusMenuItem, getUrlArgObject } = require('./utils.js');
+const {
+  api
+} = require('./api.js')
+const {
+  post,
+  pageMap,
+  delCookie,
+  setCookie,
+  setLocal,
+  getCookie,
+  focusMenuItem,
+  getUrlArgObject
+} = require('./utils.js');
 let userInfo = {};
 let isPlacefile = getCookie('isPlacefile') || 1
 
@@ -19,7 +30,11 @@ let passwordComplexity = getCookie('passwordComplexity')
 const hideLogo = getUrlArgObject("hideLg");
 const otherLogo = getUrlArgObject("adLg");
 const is3His = getUrlArgObject('is3His')
-console.log(is3His);
+//token判断没有跳登录
+const token = localStorage.getItem('accessToken');
+if (!token||localStorage.getItem('toLogin')==='1') {
+  window.location.href = '../login.html';
+}
 const modalDom = `
       <p class="tips"><img src=${WarningIcon} /><span>为确保账号安全,请及时修改初始密码</span></p>
       <div class="modalAction">
@@ -54,7 +69,11 @@ $(function () {
     getTimeDetail()
   }, 1000);
   sureChangeWord()
-  if (passwordComplexity !== 'null') {
+  const token = localStorage.getItem('accessToken');
+  if (!token) {
+    window.location.href = '../login.html';
+  }
+  if (passwordComplexity !== 'null' && token) {
     $.alerModal({
       quiteBtn: true,
       title: "修改密码",
@@ -127,7 +146,7 @@ function toast(msg) {
   $(toast).appendTo($(".alertModal"));
 }
 
-function hideDropdown() {//关闭下拉
+function hideDropdown() { //关闭下拉
   $(document).off("click").on("click", function (e) {
     $("#contentIframe").contents().find(".toggleSlide ul").hide();
   })
@@ -167,7 +186,7 @@ function bindModalEvent() {
     }
     text = $(this).val();
     $(".newword.warning,.sureword.warning").hide();
-    if (text.trim()) {    //显示密码验证标签
+    if (text.trim()) { //显示密码验证标签
       if (checker.length) {
         checker.show()
       } else {
@@ -222,31 +241,31 @@ function switchToPsd(dom) {
 //验证新密码规则
 function verifyPsd(text) {
   let pass = true;
-  if (/(?=.*?[A-Z])/.test(text)) {  //至少一个大写字母
+  if (/(?=.*?[A-Z])/.test(text)) { //至少一个大写字母
     $(".big-letter").addClass("active");
   } else {
     $(".big-letter").removeClass("active");
     pass = false;
   }
-  if (/(?=.*?[a-z])/.test(text)) {  //至少一个大写字母
+  if (/(?=.*?[a-z])/.test(text)) { //至少一个大写字母
     $(".small-letter").addClass("active");
   } else {
     $(".small-letter").removeClass("active");
     pass = false;
   }
-  if (/(?=.*?[0-9])/.test(text)) {  //至少一个数字
+  if (/(?=.*?[0-9])/.test(text)) { //至少一个数字
     $(".one-number").addClass("active");
   } else {
     $(".one-number").removeClass("active");
     pass = false;
   }
-  if (/(?=.*?[#?!@$,,%^&*-])/.test(text)) {  //至少一个特殊字符
+  if (/(?=.*?[#?!@$,,%^&*-])/.test(text)) { //至少一个特殊字符
     $(".special-letter").addClass("active");
   } else {
     $(".special-letter").removeClass("active");
     pass = false;
   }
-  if (text.length > 7) {  //至少8个字符
+  if (text.length > 7) { //至少8个字符
     $(".eight-str").addClass("active");
   } else {
     $(".eight-str").removeClass("active");
@@ -266,7 +285,7 @@ function verifyPsd(text) {
   return pass;
 }
 
-function verifyPsdPart() {   //验证各密码关系规则
+function verifyPsdPart() { //验证各密码关系规则
   const oldP = $("#oldWord").val();
   const newP = $("#newWord").val();
   const confirmP = $("#sureWord").val();
@@ -292,17 +311,18 @@ function verifyPsdPart() {   //验证各密码关系规则
 //判断有无某一权限
 function hasData(data, list) {
   if (list && list.length > 0) {
-    if (list.indexOf(data) > -1) {//有权限
+    if (list.indexOf(data) > -1) { //有权限
       return true
     }
     return false;
   }
   let lis = JSON.parse(getCookie("codeLis")) || []
-  if (lis.indexOf(data) > -1) {//有权限
+  if (lis.indexOf(data) > -1) { //有权限
     return true
   }
   return false;
 }
+
 function userActionHide(e) {
   $(".userAction").css("display", "none")
 }
@@ -337,18 +357,25 @@ function initMenu(data, userInfo) {
   });
   //收起菜单
   $(".slide-hide").off("click").click(function () {
-    $(".menu,.copy-right").animate({ "width": "60px" }, function () {
+    $(".menu,.copy-right").animate({
+      "width": "60px"
+    }, function () {
       $(this).hide();
       $(".menu-mini").show();
     });
-    $(".main").animate({ "margin-left": "60px" });
+    $(".main").animate({
+      "margin-left": "60px"
+    });
   });
   //展开菜单
   $(".slide-show").off("click").click(function () {
     $(".menu-mini").hide();
-    $(".menu,.copy-right").show().animate({ "width": "205px" }, function () {
+    $(".menu,.copy-right").show().animate({
+      "width": "205px"
+    }, function () {});
+    $(".main").animate({
+      "margin-left": "205px"
     });
-    $(".main").animate({ "margin-left": "205px" });
   });
 
   $(".menu .list-1 li").on("click", function (e) {
@@ -358,6 +385,7 @@ function initMenu(data, userInfo) {
   $(".page").on("click", function () {
     $(".menu .active,.menu-mini .active").removeClass('active');
     const code = $(this).attr("code");
+    // const code2=$(this).attr("code2");
     if (code === 'YH-KZT' || code === 'YH-KZTKS') {
       // if(code === 'YH-KZT'){
       $(".container").addClass("console-cont");
@@ -385,16 +413,17 @@ function initMenu(data, userInfo) {
 //获取科室列表
 function getOwnDept() {
   // if(hasData('FUNC000058')){
-  localStorage.setItem("deptList", JSON.stringify([]))
+  setCookie("deptList", JSON.stringify([]))
   post(api.getDept, {}).then((res) => {
     let data = res.data;
     if (data.code == 0) {
       let result = data.data
-      localStorage.setItem("deptList", JSON.stringify(result))
+      setCookie("deptList", JSON.stringify(result))
     }
   })
   // }
 }
+
 function getMenu() {
   // console.log(api.getMenu)
   isPlacefile = getCookie('isPlacefile') || 1
@@ -422,13 +451,17 @@ function getMenu() {
     }
   })
 };
+
 function getAllCode(data) {
-  let lis = [], personCodeLis = [], deptCodeLis = [], trdObj = {}
+  let lis = [],
+    personCodeLis = [],
+    deptCodeLis = [],
+    trdObj = {}
   for (let i = 0; i < data.length; i++) {
     let tmpSon = data[i]
     lis.push(tmpSon.code)
-    if (tmpSon.subMenuList.length > 0) {//三层
-      for (let j = 0; j < tmpSon.subMenuList.length; j++) {//第二层循环
+    if (tmpSon.subMenuList.length > 0) { //三层
+      for (let j = 0; j < tmpSon.subMenuList.length; j++) { //第二层循环
         let tmpGrandSon = tmpSon.subMenuList[j]
         let sonLis = []
         lis.push(tmpGrandSon.code)
@@ -439,7 +472,7 @@ function getAllCode(data) {
         }
         trdObj[tmpGrandSon.code] = sonLis
       }
-    } else {//两层
+    } else { //两层
       for (let n = 0; n < tmpSon.sysUserPermissionDTOList.length; n++) {
         let tmpData = tmpSon.sysUserPermissionDTOList[n]
         lis.push(tmpData.code)
@@ -452,10 +485,10 @@ function getAllCode(data) {
   } else if (hasData('YH-KZTKS', lis)) {
     focusMenuItem("YH-KZTKS");
   }
-  console.log(trdObj)
   setCookie("codeLis", JSON.stringify(lis))
   setLocal("trdObj", JSON.stringify(trdObj))
 }
+
 function sureChangeWord() {
   $(document).on('click', '.sureChange.active', function () {
     let oldword = $(".oldword").val().trim()
@@ -464,6 +497,7 @@ function sureChangeWord() {
     changeWord(oldword, newword)
   })
 }
+
 function changeWord(oldword, newword) {
   post(api.midifyPassword, {
     "modifyPassword": newword,
@@ -514,7 +548,6 @@ $("#changeWord").click(function (e) {
 })
 //推出登录
 $(".login-out").click(function () {
-  delCookie('accessToken')
   setCookie('behosDateStart', '')
   localStorage.removeItem('accessToken')
   setCookie('behosDateEnd', '')
@@ -530,7 +563,7 @@ function getTimeDetail() {
   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}`
+  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)
 }
 
@@ -539,4 +572,31 @@ function bindMenu() {
   $("#contentIframe").contents().find('.partTitle a').eq(0).click(function () {
     $(".menuList").scrollTop(0)
   })
-}
+}
+
+window.addEventListener('message', e => {
+  //console.trace("token已清除index", e)
+  let data = e.data||'{}';
+  if (typeof data == 'string') {
+    data = JSON.parse(data)
+  }
+  if (data.iframemessage) {
+    localStorage.removeItem('accessToken')
+    $.alerModal({
+      gobackBtn: true,
+      // quiteBtn: true,
+      title: "提示",
+      type: "modal",
+      width: '470',
+      time: 1000,
+      cancalText: '我知道了',
+	  isFather: true,
+	  fatherWrapper: $("#mainBox", parent.document),
+      sureBtn: false,
+      message: data.data || '登录过期',
+      callback: function () {
+        window.location.href = 'login.html'
+      }
+    });
+  }
+});

+ 1 - 1
src/js/itemManager.js

@@ -21,7 +21,7 @@ $(".abnormalClear").click(function(){
 })
 
 //YH-JCSJWH-TMSJWH
-$(".menu .page", parent.document).removeClass("active")
+$(".menu .page", parent.document).removeClass("active");
 $(parent.document).find(".menu .page[code=YH-JCSJWH-TMSJWH]").addClass("active")
 
 //判断有无某一权限

+ 4 - 0
src/js/keyItemFlawControl.js

@@ -50,6 +50,7 @@ $(".abnormalClear").click(function(){
   setDatePicker($("#datepicker"),$("#datepicker2"),"default")
   $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
   $("th[code]").removeClass("asc desc")
+  console.log(3333333)
   //behospitalCode =behospitalCodeTemp= ""
   getTabData(1)
   getDeptList()
@@ -95,6 +96,7 @@ function getTabData(activePage){
     "startDate":dateStatrt.replace(/\//g,'-'),
     "endDate":dateEnd.replace(/\//g,'-')
   }
+  console.log(5555555555)
   startDateParam = dateStatrt
   endDateParam = dateEnd
   $('.pagination').html("")
@@ -244,6 +246,7 @@ $("th[code]").on("click",function(e){
     data_asc="";
     $("th[code]").removeClass("asc desc");
     $(this).addClass("desc");
+    console.log(11111111111111111111111)
   }else{
     data_desc="";
     data_asc=code;
@@ -345,6 +348,7 @@ $(function() {
       }
       expJson(api.entryStatisticsExport,param).then(res =>{
           downloadExportedData(res.data, "关键条目缺陷占比.xls")
+          console.log(444444)
       })
   })
 });

+ 8 - 16
src/js/login.js

@@ -6,28 +6,27 @@ require("./modal.js")
 const { api } = require('./api.js')
 
 const { post, setCookie, delCookie, getUrlArgObject, toast } = require('../js/utils.js');
-const md5 = require('js-md5');
 const hideLogo = getUrlArgObject("hideLg");
 const otherLogo = getUrlArgObject("adLg");
-const hideXy = getUrlArgObject("hideXy");   //原判断湘雅评分时调接口使用,已弃用待核实
-let type
+let type;
 let is3His=false; //医院标记:湘雅三院1/通用0
 $(function () {
-  getHospitalMark()
-  delCookie('accessToken')
-  delCookie('hideXy')
+  //清除需要跳转到登录页的标记
+  localStorage.removeItem('toLogin');
+  if (hideLogo || otherLogo) {
+    $(".copy-right").text("");
+  }
   $(document).keyup(function (event) {
     if (event.keyCode == 13) {
       sureLogin()
     }
   });
-
+  getHospitalMark()
 
 });
 
 //获取验证码
 function getSecurityCode() {
-  var windowUrl = window.URL || window.webkitURL;//处理浏览器兼容性
   var xhr = new XMLHttpRequest();
   var url = api.getCaptcha;//验证码请求地址
   xhr.open("GET", url, true);
@@ -50,13 +49,11 @@ function getSecurityCode() {
   xhr.send();
 }
 function getHospitalMark() {
-  localStorage.removeItem('accessToken')
   post(api.getHospitalMark).then((res) => {
   const data = res.data;//{ code: 0, data: 0 }
   if (data.code == 0) {
     type = parseInt(data.data)
     is3His=type===1;
-    setCookie('hideXy', type)
     if (is3His) {   //湘雅三院登录样式
       str = '<div class="bg2">'
       str += '<div class="login-info">'
@@ -96,9 +93,6 @@ function getHospitalMark() {
         $('.login').html(str)
         getSecurityCode();
     }
-	if (hideLogo || otherLogo || hideXy) {
-	  $(".copy-right").text("");
-	}
     $(".sureLogin").click(() => {
       sureLogin()
     })
@@ -163,7 +157,6 @@ function sureLogin() {
   }).then((res) => {
     const data = res.data;
     if (data.code == 0) {
-      setCookie('accessToken', data.data.accessToken)
       setCookie('isPlacefile', 1)
       setCookie('passwordComplexity', data.data.passwordComplexity)
       //setCookie('mmps',password);
@@ -174,8 +167,7 @@ function sureLogin() {
         cacheCheckDatas(data.data.selRoles);
         const otherLogoPm = otherLogo ? '?adLg=1' : '';
         const hideLgPm = hideLogo ? '?hideLg=1' : '';
-        const hideXyPm = hideXy ? '?hideXy=1' : '';
-        window.location.href = 'index.html' + hideLgPm + otherLogoPm +hideXyPm+ "?is3His="+is3His;
+        window.location.href = 'index.html' + hideLgPm + otherLogoPm + "?is3His="+is3His;
       }, 600);
     } else {
         if(!is3His){

+ 14 - 0
src/js/mock.js

@@ -0,0 +1,14 @@
+// var Mock = require('mockjs')
+// 要上线了
+var Mock = {
+    mock: ()=> {
+
+    }
+}
+Mock.mock('test/test1', {
+    data: 123,
+    code: 0,
+    msg: 'success'
+})
+console.log(1123123, Mock)
+// 刚才是它打印的

+ 50 - 27
src/js/modal.js

@@ -4,35 +4,52 @@ const jQuery = require('jquery');
     let close = require("../images/icon_close_default.png")
     let suc = require("../images/success.png")
     let def = require("../images/default.png")
+    let warn = require("../images/warn.png")
     let loadingImg = require("../images/loading.gif")
     $.alerModal = function (options) {
         var dft = {
-            sureBtn:true,
-            quiteBtn:false,
-            width:"400",
-            title:"标题",
-            sureText:"确定",
+            sureBtn: true,
+            quiteBtn: false,
+            gobackBtn: false,
+            width: "400",
+            title: "标题",
+            sureText: "确定",
+            cancalText: '取消',
+            gobackText: '我知道了',
             message: '<p class="tip">内容</p>',
             time: 1500,
-            isFather: false,
-            fatherWrapper:'',
-            type:'modal',//tip,loading
-            callback:function(){
-                // alert(99)
-            }
+		    isFather: true,
+		    fatherWrapper: $("#mainBox", parent.document),
+            type: 'modal', //tip,loading
+            callback: null
         };
         var ops = $.extend(dft, options || {});
+        var popDom = $('.alertModal:visible');
+        if(ops.isFather){
+		  popDom =ops.fatherWrapper.find('.alertModal:visible');
+		}
+		const ptitle = popDom.find(".titlemodal").text().trim();
+		if(popDom.length&&ptitle!=="修改密码"){
+		  //如果该弹窗已存在,则不再显示多个
+		  return;
+		}
+		if(ptitle==="修改密码"){
+		  popDom.remove();
+		}
         var html = `
             <div class="alertModal">
                 <div class="modalBg"></div>
                 <div class="modalMain" style="width:${ops.width}px;margin-left:-${ops.width/2}px">
-                <p class="title">${ops.title} <img src="${close}" alt=""></p>
-                <div class="content">
+                <p class="titlemodal">${ops.title} <img src="${close}" alt=""></p>
+                <div class="content ${ops.gobackBtn?'contentleft':''}">
+
+                <img style='display:${ops.gobackBtn?'inlineBlock':'none'} ' class='warnimg' src="${warn}" />
                     ${ops.message}
                 </div>
                 <div class="btns clearfix">
-                    <span class="quite" style="display:${ops.quiteBtn?'inlineBlock':'none'}">取消</span>
+                    <span class="quite" style="display:${ops.quiteBtn?'inlineBlock':'none'}">${ops.cancalText}</span>
                     <span class="sure sureChange" style="display:${ops.sureBtn?'inlineBlock':'none'}">${ops.sureText}</span>
+                    <span class="gobackbtn" style="display:${ops.gobackBtn?'inlineBlock':'none'}">${ops.gobackText}</span>
                 </div>
                 </div>
             </div>
@@ -72,26 +89,32 @@ const jQuery = require('jquery');
         var loading = `
             <div class="loading"><img src="${loadingImg}" alt=""></div>
         `
-        var box = $("<div/>",{
-            "class":"divModal",
-            "html":ops.type == 'tip'?tip:ops.type == 'loading'?loading:ops.type == 'radio'?radioExp:html
+        var box = $("<div/>", {
+            "class": "divModal",
+            "html": ops.type == 'tip' ? tip : ops.type == 'loading' ? loading : ops.type == 'radio' ? radioExp : html
         }).css({
-            left:$(".modaltip").width()/2+'px',
-            top:$(".modaltip").height()/2+'px'
+            left: $(".modaltip").width() / 2 + 'px',
+            top: $(".modaltip").height() / 2 + 'px'
         })
-        if(ops.isFather){
+        if (ops.isFather) {
             //console.log('bbbbbbb')
-           ops.fatherWrapper.append(box)
-        } else{
+            ops.fatherWrapper.append(box)
+        } else {
             $("body").append(box)
         }
-        if(ops.type == 'tip'){
-            setTimeout(function(){
+        if (ops.type == 'tip') {
+            setTimeout(function () {
                 box.remove();
             }, ops.time);
         }
-        $(document).on('click',".alertModal .title img,.alertModal .quite",function(){
-            box.remove();
-        })
+        if (ops.callback && typeof ops.callback === 'function') {
+            $(parent.document||document).on('click', ".alertModal .titlemodal img,.alertModal .quite,.alertModal .gobackbtn", function () {
+                ops.callback();
+            })
+        } else {
+            $(parent.document||document).on('click', ".alertModal .titlemodal img,.alertModal .quite,.alertModal .gobackbtn", function () {
+                box.remove();
+            })
+        }
     }
 })(jQuery);

+ 1 - 1
src/js/moduleManager.js

@@ -16,7 +16,7 @@ function setTbaleInfoHei(){
 setTbaleInfoHei()
 
 // YH-JCSJWH-MKSJWH
-$(".menu .page", parent.document).removeClass("active")
+$(".menu .page", parent.document).removeClass("active");
 $(parent.document).find(".menu .page[code=YH-JCSJWH-MKSJWH]").addClass("active")
 //判断有无某一权限
 function hasData(data){

+ 0 - 1
src/js/mukuaiControl.js

@@ -188,7 +188,6 @@ $("th[code]").on("click",function(e){
       $(this).addClass("asc");
     }
     getTabData(1);
-    // console.log(code)
 });
 //获取表格数据
 function getTabData(activePage){

+ 22 - 19
src/js/qcList.js

@@ -2,7 +2,7 @@ const $ = require('jquery');
 require("../css/qcList.less");
 require('./modal.js');
 const { api } = require('./api.js')
-const { post, getCookie,getLocal, getUrlArgObjectNew, emptyBox, downloadExportedData, expJson, getLogoParam, listenScroll, exportTimeLimit } = require('./utils.js')
+const { post, getCookie, getLocal, getUrlArgObjectNew, emptyBox, downloadExportedData, expJson, getLogoParam, listenScroll, exportTimeLimit } = 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")
@@ -139,7 +139,12 @@ function getTabData(activePage) {
                 $('.pagination').html("")
             }
         } else {
-            $.alerModal({ "message": res.data.msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+            const token = localStorage.getItem('accessToken');
+            if (!token && window.location.href.indexOf('login') == -1) {
+                //alert('无token判断,跳回登录')
+            } else {
+                $.alerModal({ "message": res.data.msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+            }
         }
     }).catch((e) => {
 
@@ -317,7 +322,7 @@ $(".abnormalClear").on("click", function (e) {
     getTabData(1)
 })
 function renderTab(data, hisId) {
-    let str = ``,icon = iconUnCheck;
+    let str = ``, icon = iconUnCheck;
     let hasSelectAll = true;
     if (data.length === 0) {
         $('.tbody').html(emptyBox(null, showNum + 2))
@@ -327,15 +332,15 @@ function renderTab(data, hisId) {
     for (let i = 0; i < data.length; i++) {
         const item = data[i]
         // item.hasSelect = false
-        if (item.checkStatus!==1&&!item.hasSelect) {
+        if (!item.hasSelect) {
             hasSelectAll = false
         }
-        
+
         // <td  class="recordScoreOperaBtn textCenter" style="opacity:${hasData('FUNC000017')?'1':'0.5'}">评分</td>
-        icon=item.checkStatus===1?iconDisCheck:iconUnCheck;     //已核查的不可评分显示禁用图标
+        icon = iconUnCheck;     //已核查的不可评分显示禁用图标
         str += `
             <tr  data-index=${i}>
-                <td class="scoreOperaItem ${item.checkStatus===1?'disabled':''} textCenter">${item.hasSelect ? `<img class="iconCheck" src=${iconCheck} />` : `<img class="iconCheck" src=${icon} />`}</td>
+                <td class="scoreOperaItem textCenter">${item.hasSelect ? `<img class="iconCheck" src=${iconCheck} />` : `<img class="iconCheck" src=${icon} />`}</td>
                 `
         // console.log(item.hasSelect)
         for (let j = 0; j < pageSet.length; j++) {
@@ -375,7 +380,7 @@ function isTextCenter(name) {
 
 function scoreDetail(id, age, hid, code, name) {
     const logoParam = getLogoParam();
-    window.open(`./qcScore.html?id=${id}&age=${age}&name=${name}&hid=${getCookie('hospitalid')}&code=${code}`+logoParam)
+    window.open(`./qcScore.html?id=${id}&age=${age}&name=${name}&hid=${getCookie('hospitalid')}&code=${code}` + logoParam)
 }
 function bindScoreDetail(hisId) {
     $('.patientNameSpan').on('click', function (e) {
@@ -500,9 +505,9 @@ function bindCheckedSelectQc() {
 function bindScoreOperaItem() {
     $(".scoreOperaItem").off("click").on("click", function (e) {
         const index = $(this).parent().attr("data-index")
-        if (tabList[index].checkStatus == 1){
+        /*if (tabList[index].checkStatus == 1){
             return
-        }
+        }*/
         tabList[index].hasSelect = tabList[index].hasSelect ? false : true
         renderTab(tabList)
     })
@@ -528,11 +533,9 @@ function bindOperaAll() {
             }
         } else {
             for (let i = 0; i < tabList.length; i++) {
-                if (tabList[i].checkStatus == 1){
-                    tabList[i].hasSelect = false
-                }else{
-                    tabList[i].hasSelect = true
-                }
+
+                tabList[i].hasSelect = true
+
             }
         }
         renderTab(tabList)
@@ -783,8 +786,8 @@ function renderColSet(list) {
             <span class='colName'>            
                 <span>${pageSetList[i].name}</span>
                 <span class="pageOrder">
-                    <span class="pageSetUpBox">${ i === 0 ? '' : `<img class="pageSetUp" src=${goUpG} />`}</span>
-                    <span  class="pageSetDownBox">${ i === pageSetList.length - 1 ? '' : `<img class="pageSetDown" src=${goDownG} />`}</span>
+                    <span class="pageSetUpBox">${i === 0 ? '' : `<img class="pageSetUp" src=${goUpG} />`}</span>
+                    <span  class="pageSetDownBox">${i === pageSetList.length - 1 ? '' : `<img class="pageSetDown" src=${goDownG} />`}</span>
                 </span>
                
             </span>
@@ -1179,7 +1182,7 @@ $((function ($) {
 })($));
 function closeRadio() {
     $(".colSetBox .iconClose,.colSetBox .cancalColSet", parent.document).off("click").on("click", function () {
-        $(".divModal", parent.document).html("")
+        $(".divModal", parent.document).remove()
     })
 }
 function radioSelect() {
@@ -1198,7 +1201,7 @@ function bindSaveColPort(param) {
         }
         param.radioCheck = radioCheck || 1
         expJson(api.exportQcList, param).then(res => {
-            $(".divModal", parent.document).html("")
+            $(".divModal", parent.document).remove()
             downloadExportedData(res.data, behosDateStart.slice(0, 10).replace(/-/g, "") + "-" + behosDateEnd.slice(0, 10).replace(/-/g, "") + "抽查住院病历质量情况.xls")
         })
     })

+ 6 - 1
src/js/qcListDept.js

@@ -142,7 +142,12 @@ function getTabData(activePage,qcCheckMain){
                 $('.pagination').html("")
             }
         }else{
-            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            const token = localStorage.getItem('accessToken');
+            if (!token && window.location.href.indexOf('login') == -1) {
+                //alert('无token判断,跳回登录')
+            } else {
+                $.alerModal({ "message": res.data.msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+            }
         }
     }).catch((e) =>{
     

文件差異過大導致無法顯示
+ 491 - 485
src/js/qcListDocteam.js


文件差異過大導致無法顯示
+ 574 - 568
src/js/qcListOutHospital.js


文件差異過大導致無法顯示
+ 521 - 515
src/js/qcListPerson.js


+ 3 - 1
src/js/qcScore.js

@@ -6,7 +6,9 @@ const {post,getUrlArgObject,setBoxHeight,getCookie,getLocal,initScroll} = requir
 const {api,ywCheckApi} = require('./api.js');
 let checkOk = require('./../images/checkOk.png')
 const adLogo = require("../images/adlogo.png")
-
+if (localStorage.getItem('toLogin')==='1') {
+  window.location.href = '../login.html';
+}
 $(function(){
   const hideLogo = getUrlArgObject("hideLg");
   if(hideLogo){

+ 185 - 179
src/js/readmission.js

@@ -1,40 +1,40 @@
 const $ = require('jquery');
 require("../css/readmission.less");
 require('./modal.js');
-const {api} = require('./api.js')
-const { post, getCookie, getUrlArgObjectNew, emptyBox, setTitleTxt, setDatePicker,getLogoParam,getPickerDate,expJson,downloadExportedData,initScroll,listenScroll} = require('./utils.js')
+const { api } = require('./api.js')
+const { post, getCookie, getUrlArgObjectNew, emptyBox, setTitleTxt, setDatePicker, getLogoParam, getPickerDate, expJson, downloadExportedData, initScroll, listenScroll } = 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 iconCheck = require("./../images/icon_check.png")
 const iconUnCheck = require("./../images/icon_unchecked.png")
-const iconDown= require("./../images/arrow_down.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 arrowLeft = require("./../images/arrow_left.png")
 const arrowRight = require("./../images/arrow_right.png")
-let  deptName = "", behospitalCode="", deptNameTemp = "",deptId='',deptIdTemp='', behospitalCodeTemp="", data_desc="",data_asc="",deptRecord="",patientName="" ; 
-let srcUrl = $("#contentIframe",parent.document).attr("src")
-statisticsType = getUrlArgObjectNew("dateType",srcUrl)||"";
-from = getUrlArgObjectNew("from",srcUrl)||""
-lineType = getUrlArgObjectNew("lineType",srcUrl)||""
-let startDateParam = getUrlArgObjectNew("startDateParam",srcUrl)||""
-let endDateParam = getUrlArgObjectNew("endDateParam",srcUrl)||""
+let deptName = "", behospitalCode = "", deptNameTemp = "", deptId = '', deptIdTemp = '', behospitalCodeTemp = "", data_desc = "", data_asc = "", deptRecord = "", patientName = "";
+let srcUrl = $("#contentIframe", parent.document).attr("src")
+statisticsType = getUrlArgObjectNew("dateType", srcUrl) || "";
+from = getUrlArgObjectNew("from", srcUrl) || ""
+lineType = getUrlArgObjectNew("lineType", srcUrl) || ""
+let startDateParam = getUrlArgObjectNew("startDateParam", srcUrl) || ""
+let endDateParam = getUrlArgObjectNew("endDateParam", srcUrl) || ""
 // $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
 /*if(lineType){
   $("th[code="+data_desc+"]").addClass("desc");
 }*/
 //setTitleTxt('',from)         //导航栏面包屑
 listenScroll()
-if(statisticsType == 1){
-  setDatePicker($("#datepicker"),$("#datepicker2"),1)
-}else if(statisticsType == 2){
-  setDatePicker($("#datepicker"),$("#datepicker2"),2)
-}else if(statisticsType == 3){
-  setDatePicker($("#datepicker"),$("#datepicker2"),3,new Date(startDateParam),new Date(endDateParam))
-}else{
-  setDatePicker($("#datepicker"),$("#datepicker2"),'default')
+if (statisticsType == 1) {
+  setDatePicker($("#datepicker"), $("#datepicker2"), 1)
+} else if (statisticsType == 2) {
+  setDatePicker($("#datepicker"), $("#datepicker2"), 2)
+} else if (statisticsType == 3) {
+  setDatePicker($("#datepicker"), $("#datepicker2"), 3, new Date(startDateParam), new Date(endDateParam))
+} else {
+  setDatePicker($("#datepicker"), $("#datepicker2"), 'default')
 }
-let isPlacefile = getCookie('isPlacefile')||1
+let isPlacefile = getCookie('isPlacefile') || 1
 
 // $( "#datepicker" ).datepicker({
 //   changeMonth: true,
@@ -48,7 +48,7 @@ let isPlacefile = getCookie('isPlacefile')||1
 // }).datepicker( "setDate",new Date(endDateParam));
 
 
-if(from==2){
+if (from == 2) {
   // $(".export").css('display','none')
   // $(".partTitle .titlePic ").html(`<a class="consoleD" href="deptConsole.html">控制台(科室) / </a><a class="consoleP" href="singleVeto.html?from=1">条目缺陷占比 / </a>缺陷详情`)
   // deptId=deptListDept[0]&&deptListDept[0].deptId; 
@@ -56,25 +56,25 @@ if(from==2){
   // deptNameTemp=deptListDept[0]&&deptListDept[0].deptName;
   // deptIdTemp=deptListDept[0]&&deptListDept[0].deptId;
   // $('.selectDept').html(deptName)
-}else if(from==3){
-//   $(".partTitle .titlePic ").html(`<a href="keyItemFlawControl.html">关键条目缺陷占比 / </a>缺陷详情`)
-}else{
+} else if (from == 3) {
+  //   $(".partTitle .titlePic ").html(`<a href="keyItemFlawControl.html">关键条目缺陷占比 / </a>缺陷详情`)
+} else {
   $(".partTitle .titlePic ").html(`<a class="consoleD" href="console.html">控制台 / </a>31日再入院病历数`)
 }
 
-if(!statisticsType){
-  setDatePicker($("#datepicker"),$("#datepicker2"),'default')
+if (!statisticsType) {
+  setDatePicker($("#datepicker"), $("#datepicker2"), 'default')
 }
-$(".abnormalClear").click(function(){
-  data_desc="";
-  data_asc="";
-  deptId="";
-  deptIdTemp="";
-  deptName="";
-  deptNameTemp="";
-  patientName= "";
-  deptRecord="";
-  setDatePicker($("#datepicker"),$("#datepicker2"),"default")
+$(".abnormalClear").click(function () {
+  data_desc = "";
+  data_asc = "";
+  deptId = "";
+  deptIdTemp = "";
+  deptName = "";
+  deptNameTemp = "";
+  patientName = "";
+  deptRecord = "";
+  setDatePicker($("#datepicker"), $("#datepicker2"), "default")
   $('.patientRecordInp').val('')
   $('.patientNameInp').val('')
   // $(".deptList").css("display", "none")
@@ -83,10 +83,10 @@ $(".abnormalClear").click(function(){
   //behospitalCode =behospitalCodeTemp= ""
   getTabData(1)
 })
-$(".partTitle a").click(function(){
+$(".partTitle a").click(function () {
   //初始菜单选中
-  $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
-  $(".container",parent.document).addClass("console-cont");
+  $(".menu .page", parent.document).removeClass("active").eq(0).addClass("active");
+  $(".container", parent.document).addClass("console-cont");
 })
 $(".menu .page", parent.document).removeClass("active")
 const ele = $(parent.document).find(".menu .page[code=YH-ZKK-31TZRYRS]")
@@ -96,9 +96,9 @@ ele.addClass("active")
 //   parEle.click();
 // }
 
-setTimeout(function(){
-  $(".menuList",parent.document).scrollTop(768)
-},300)
+setTimeout(function () {
+  $(".menuList", parent.document).scrollTop(768)
+}, 300)
 
 //判断有无某一权限
 /*function hasData(data){
@@ -112,59 +112,65 @@ setTimeout(function(){
   }
   return false;
 }*/
-function getTabData(activePage){
-  const dateStatrt = getPickerDate($("#datepicker"),1)
-  const dateEnd = getPickerDate($("#datepicker2"),2)
+function getTabData(activePage) {
+  const dateStatrt = getPickerDate($("#datepicker"), 1)
+  const dateEnd = getPickerDate($("#datepicker2"), 2)
   const start = new Date(dateStatrt).getTime()
   const end = new Date(dateEnd).getTime()
-  if(start > end){
-    $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+  if (start > end) {
+    $.alerModal({ "message": '开始时间不能大于结束时间~', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
     return
   }
   const param = {
-    current:activePage,
+    current: activePage,
     size: 10,
-    name:patientName,
-    fileCode:deptRecord,
-    startDate:dateStatrt.replace(/\//g,'-'),
-    endDate:dateEnd.replace(/\//g,'-')
+    name: patientName,
+    fileCode: deptRecord,
+    startDate: dateStatrt.replace(/\//g, '-'),
+    endDate: dateEnd.replace(/\//g, '-')
   }
   startDateParam = dateStatrt
   endDateParam = dateEnd
   $('.pagination').html("")
-  $('.tbody').html(emptyBox('努力加载中...','',1))
-  post(api.reHos31DaysPage,param).then(res =>{
-    if(res.data.code == '0'){
-      const data = res.data.data||[];
+  $('.tbody').html(emptyBox('努力加载中...', '', 1))
+  post(api.reHos31DaysPage, param).then(res => {
+    if (res.data.code == '0') {
+      const data = res.data.data || [];
       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{
+      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)});
+    } else {
+      const token = localStorage.getItem('accessToken');
+      if (!token && window.location.href.indexOf('login') == -1) {
+        //alert('无token判断,跳回登录')
+      } else {
+        $.alerModal({ "message": res.data.msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+      }
+
     }
-  }).catch((e) =>{
+  }).catch((e) => {
 
   })
- 
+
 }
 
 getTabData(1)
 
-$(".filter").on("click", function(e){
+$(".filter").on("click", function (e) {
   // deptName = deptNameTemp;
   behospitalCode = behospitalCodeTemp;
   getTabData(1)
 })
 // // 处理th tr数据
-function formatTableData(data){
-  let newColumns = data.filter(function(item,index){
-    if(item.isShow === 1) {
+function formatTableData(data) {
+  let newColumns = data.filter(function (item, index) {
+    if (item.isShow === 1) {
       return item
     }
   })
@@ -172,20 +178,20 @@ function formatTableData(data){
 }
 
 
-function renderTab(data,hisId,activePage){
+function renderTab(data, hisId, activePage) {
   data = data.records;
   let newData = []
-  for(var i = 0; i < data.length ; i++) {
-    let dataCopy = {copy: true, ...data[i]}
-    newData =  [...newData,data[i],dataCopy]    
+  for (var i = 0; i < data.length; i++) {
+    let dataCopy = { copy: true, ...data[i] }
+    newData = [...newData, data[i], dataCopy]
   }
   let str = ``
-  for(let i = 0; i < newData.length; i++){
-      const item = newData[i]
-      if(!item.copy){
-        str += `
+  for (let i = 0; i < newData.length; i++) {
+    const item = newData[i]
+    if (!item.copy) {
+      str += `
           <tr  data-index=${i}>
-          <td class="textCenter" rowspan="2">${Math.ceil(((activePage-1)*20 + i+1)/2)}</td>
+          <td class="textCenter" rowspan="2">${Math.ceil(((activePage - 1) * 20 + i + 1) / 2)}</td>
           <td class="textCenter">${item.details[0].behospitalCode || "-"}</td> 
           <td class="textCenter" rowspan="2">${item.fileCode || "-"}</td> 
           <td class="textCenter patientNameSpan" data-id="${item.details[0].behospitalCode}" data-name="${item.details[1].name}" >${item.details[0].name || "-"}</td> 
@@ -203,8 +209,8 @@ function renderTab(data,hisId,activePage){
           <td class="textCenter" rowspan="2">${item.lastAgainBehospitalPlan || "-"}</td> 
           </tr>
         `
-      }else{
-        str += `
+    } else {
+      str += `
           <tr  data-index=${i} class="copy">
           <td class="textCenter delete"></td> 
           <td class="textCenter">${item.details[1].behospitalCode || "-"}</td> 
@@ -224,52 +230,52 @@ function renderTab(data,hisId,activePage){
           <td class="textCenter delete">${item.lastAgainBehospitalPlan || "-"}</td> 
           </tr>
         `
-      }
+    }
   }
-  $('.tbody').html(str?str:emptyBox())
+  $('.tbody').html(str ? str : emptyBox())
   $(".tbody .copy .delete").hide()
   /*bindScoreDetail(hisId)*/
   // 跳转至详情页
-  $(".goHomeDetail").click(function(){
+  $(".goHomeDetail").click(function () {
     let casesName = $(this).attr("data-name") || '';
     let casesId = $(this).attr("data-id");
-    let name=$(this).attr("dept-name");
-    name=name==="全院"?"全部":name;
-    let id=$(this).attr("dept-id");
+    let name = $(this).attr("dept-name");
+    name = name === "全院" ? "全部" : name;
+    let id = $(this).attr("dept-id");
 
-    $(parent.document).find("#contentIframe").attr("src","uccDetail.html?from=3&deptName="+name+"&deptId="+id+"&casesEntryId="+casesId+"&defectName="+casesName+"&startDate="+startDateParam+"&endDate="+endDateParam)
+    $(parent.document).find("#contentIframe").attr("src", "uccDetail.html?from=3&deptName=" + name + "&deptId=" + id + "&casesEntryId=" + casesId + "&defectName=" + casesName + "&startDate=" + startDateParam + "&endDate=" + endDateParam)
   })
   bindScoreDetail(hisId)
   // initScroll("partDetailControl","YX",1)
 }
 
-function scoreDetail(id,age,hid,code,name){
-    const logoParam = getLogoParam();
-  window.open(`./qcScore.html?id=${id}&age=${age}&name=${name}&hid=${getCookie('hospitalid')}&code=${code}`+logoParam)
+function scoreDetail(id, age, hid, code, name) {
+  const logoParam = getLogoParam();
+  window.open(`./qcScore.html?id=${id}&age=${age}&name=${name}&hid=${getCookie('hospitalid')}&code=${code}` + logoParam)
 }
 // 跳转至病人详情
-function bindScoreDetail(hisId){
-  $('.patientNameSpan').on('click',function(e){
-      // const id = $(this).attr('data-id')
-      // const age = ''
-      // const noScore = ''
-      // const checkStatus = ''
-      // const name = $(this).attr('data-name')
-      const id = $(this).attr('data-id')
-      const age = ''
-      const noScore = ''
-      const checkStatus = ''
-      const name = $(this).attr('data-name')
-      // qcScore.html?id=ZY010000669760&age=null&name=李**&hid=1&code=YH-BLZK-ZKPF
-      // console.log(id,'=',name,'=');
-      if(noScore){
-          $.alerModal({"message":'请先进行评分!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-          return
-      } else{
-          // scoreDetail(id,age,hisId,'YH-BLZK-ZKPF',tabList[index].name)
-          scoreDetail(id,age,hisId,'YH-BLZK-ZKPF',name)
-      }
-     
+function bindScoreDetail(hisId) {
+  $('.patientNameSpan').on('click', function (e) {
+    // const id = $(this).attr('data-id')
+    // const age = ''
+    // const noScore = ''
+    // const checkStatus = ''
+    // const name = $(this).attr('data-name')
+    const id = $(this).attr('data-id')
+    const age = ''
+    const noScore = ''
+    const checkStatus = ''
+    const name = $(this).attr('data-name')
+    // qcScore.html?id=ZY010000669760&age=null&name=李**&hid=1&code=YH-BLZK-ZKPF
+    // console.log(id,'=',name,'=');
+    if (noScore) {
+      $.alerModal({ "message": '请先进行评分!', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+      return
+    } else {
+      // scoreDetail(id,age,hisId,'YH-BLZK-ZKPF',tabList[index].name)
+      scoreDetail(id, age, hisId, 'YH-BLZK-ZKPF', name)
+    }
+
   })
 }
 
@@ -373,7 +379,7 @@ function bindScoreDetail(hisId){
 //     $('.selectDept').removeClass('unSelect')
 //   })
 // }
-function loading(){
+function loading() {
   const str = `
     <div class="loadingBox">
             <div class="mask"></div>
@@ -382,24 +388,24 @@ function loading(){
     `
   $("#mainBox", parent.document).append(str)
 }
-function hideLoading(){
+function hideLoading() {
   $("#mainBox .loadingBox", parent.document).remove()
 }
-$(document).on("click", function(){
+$(document).on("click", function () {
   $(".deptList").css("display", "none");
   // $(".selectDept .arrow").attr("src",iconDown)
 })
 // 上升下降筛选
-$("th[code]").off("click").on("click",function(e){
-  const code=$(this).attr("code");
-  if(data_asc==code){
-    data_desc=code;
-    data_asc="";
+$("th[code]").off("click").on("click", function (e) {
+  const code = $(this).attr("code");
+  if (data_asc == code) {
+    data_desc = code;
+    data_asc = "";
     $("th[code]").removeClass("asc desc");
     $(this).addClass("desc");
-  }else{
-    data_desc="";
-    data_asc=code;
+  } else {
+    data_desc = "";
+    data_asc = code;
     $("th[code]").removeClass("asc desc");
     $(this).addClass("asc");
   }
@@ -408,58 +414,58 @@ $("th[code]").off("click").on("click",function(e){
 
 
 //分页渲染
-function renderPagination(totalPage,activePage,totalNum){
+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++){
+  if (totalPage <= 6) {
+    for (let i = 1; i <= totalPage; i++) {
 
-      str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+      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>`
+  } 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>`
+      str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
 
-    } else if(activePage > totalPage -3){
+    } 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>`
+      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="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="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){
+  $(".pageNum").on("click", function (e) {
     const activePageNow = Number($(this).attr('data-page'))
     getTabData(activePageNow)
     // renderPagination(totalPage,activePageNow,totalNum)
   })
-  $(".prePage").on("click", function(e){
+  $(".prePage").on("click", function (e) {
     let activePageNow = Number($(".activePage").attr('data-page'))
-    if(activePageNow > 1){
+    if (activePageNow > 1) {
       activePageNow--
       getTabData(activePageNow)
       // renderPagination(totalPage,activePageNow,totalNum)
     }
   })
-  $(".nextPage").on("click", function(e){
+  $(".nextPage").on("click", function (e) {
     let activePageNow = Number($(".activePage").attr('data-page'))
-    if(activePageNow < totalPage){
+    if (activePageNow < totalPage) {
       activePageNow++
       getTabData(activePageNow)
       // renderPagination(totalPage,activePageNow,totalNum)
@@ -469,58 +475,58 @@ function renderPagination(totalPage,activePage,totalNum){
 }
 
 // 获取科室名称
-$(".patientNumInp").on("input", function(e){
+$(".patientNumInp").on("input", function (e) {
   const val = $(this).val().trim()
   deptName = val
 })
- 
+
 // 获取病人姓名  patientRecordInp
-$(".patientNameInp").on("input", function(e){
+$(".patientNameInp").on("input", function (e) {
   const val = $(this).val().trim()
   patientName = val
 })
 
 // 获取病案号  patientRecordInp
-$(".patientRecordInp").on("input", function(e){
+$(".patientRecordInp").on("input", function (e) {
   const val = $(this).val().trim()
   deptRecord = val
 })
 
 
-$(function() {
-  const  iconCalenBlue= require("./../images/icon_calen_blue.png")
-  const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+$(function () {
+  const iconCalenBlue = require("./../images/icon_calen_blue.png")
+  const iconCalenGrey = require("./../images/icon_calen_grey.png")
   $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
-  $('.iconCalen').on("mouseenter", function(e){
+  $('.iconCalen').on("mouseenter", function (e) {
     $(this).attr("src", iconCalenBlue)
   })
-  $('.iconCalen').on("mouseleave", function(e){
+  $('.iconCalen').on("mouseleave", function (e) {
     $(this).attr("src", iconCalenGrey)
   })
-  $('.iconCalen').on("click", function(e){
+  $('.iconCalen').on("click", function (e) {
     $(this).parent().find("input").focus()
   })
-  $('.export').click(function(){
-      const start = new Date(startDateParam).getTime()
-      const end = new Date(endDateParam).getTime()
-      if(start > end){
-          $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-          return
-      }
-      const param = {
-        name:patientName,
-        isPlacefile:isPlacefile,
-        fileCode:deptRecord,
-        startDate:startDateParam.replace(/\//g,'-'),
-        endDate:endDateParam.replace(/\//g,'-'),
-      }
-      expJson(api.reHos31DaysPageExport,param).then(res =>{
-          downloadExportedData(res.data, "31天再入院人数.xls")
-      })
-      
-      //  初始渲染TableTitle
-      // getPageSet().then(res =>{
-      //   $(".filter").click();   //初始查询
-      // })
+  $('.export').click(function () {
+    const start = new Date(startDateParam).getTime()
+    const end = new Date(endDateParam).getTime()
+    if (start > end) {
+      $.alerModal({ "message": '开始时间不能大于结束时间~', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+      return
+    }
+    const param = {
+      name: patientName,
+      isPlacefile: isPlacefile,
+      fileCode: deptRecord,
+      startDate: startDateParam.replace(/\//g, '-'),
+      endDate: endDateParam.replace(/\//g, '-'),
+    }
+    expJson(api.reHos31DaysPageExport, param).then(res => {
+      downloadExportedData(res.data, "31天再入院人数.xls")
+    })
+
+    //  初始渲染TableTitle
+    // getPageSet().then(res =>{
+    //   $(".filter").click();   //初始查询
+    // })
   })
 });

+ 5 - 4
src/js/roleManager.js

@@ -59,17 +59,18 @@ $(function(){
         })
     }
     function saveRoleMenu(params){
+	  const doc = parent?parent.document:document;
         post(api.saveRoleMenu,params).then(res =>{
             let data = res.data;
-            $(".loading").remove()
+            $(doc).find(".loading").remove()
             if(data.code == '0'){
-                $(".divModal").remove()
+                $(doc).find(".divModal").remove()
                 $.alerModal({type:"tip",message:"保存成功",win:true});
             }else{
 
             }
         }).catch((e) =>{
-            $(".loading").remove()
+            $(doc).find(".loading").remove()
         })
     }
 
@@ -111,7 +112,7 @@ $(function(){
             let grandParentId = $(this).parents(".mainSys").attr("data-menuId")
             let grandIndex = $(this).parents(".mainSys").attr("data-index")
             let tmpSelectData = null,tmpSelectDataOr=[];
-            if(grandParentId == 3||grandParentId == 2||grandParentId==17||grandParentId==18||grandParentId==61){//循环
+            if(grandParentId == 3||grandParentId == 2||grandParentId==17||grandParentId==18||grandParentId==61||grandParentId==69||grandParentId==72){//循环
                 // console.log(curData[grandIndex])
                 let tmpData = curData[grandIndex];
                 let tmpDataLis = curData[grandIndex].sonMenuDTOList;

+ 1 - 1
src/js/userManager.js

@@ -177,7 +177,7 @@ function bindEdit(data,activePage){
 }
 //启用禁用
 function toggleOnOff(url,id,that,status){
-    $.alerModal({type:"loading"});
+    //$.alerModal({type:"loading"});
     post(url,{userId:id}).then(res =>{
         if(res.data.code == '0'){
             // const data = res.data.data

+ 204 - 85
src/js/utils.js

@@ -2,7 +2,11 @@ const qs = require('qs');
 const $ = require('jquery');
 const axios = require('axios');
 var Utils = require('./rePromise');
-const {ywCheckApi} = require('./api.js')
+require("./modal.js")
+const {
+  ywCheckApi
+} = require('./api.js');
+
 require('./scrollBar.js');
 const baseUrl = '';
 //页面映射
@@ -58,25 +62,29 @@ const pageMap = {
   'YH-KSZR-GJTMQXZB_XQ': 'keyItemFlawControlDept.html',
   'YH-KSZR-CYRSTJ_XQ': 'qcListOutHospitalDept.html?from=2',
   'YH-KSZR-RYRSTJ_XQ': 'qcListOutHospitalDept.html?inner=2&from=2',
-  'YH-ZKK-BLZK_XQ':'qcListYw.html',
-  'YH-KSZR-BLZK_XQ':'qcListDeptYw.html',
-  'YH-ZKHC-SCHCRW':'creatCheckTask.html',    //义乌-生成核查任务
-  'YH-ZKHC-FPHCRW':'allotCheckTask.html',  //义乌-分配核查任务
-  'YH-ZKHC-HCRWLB':'checkTaskList.html',  //义乌-核查任务列表
+  'YH-ZKK-BLZK_XQ': 'qcListYw.html',
+  'YH-KSZR-BLZK_XQ': 'qcListDeptYw.html',
+  'YH-ZKHC-SCHCRW': 'creatCheckTask.html', //义乌-生成核查任务
+  'YH-ZKHC-FPHCRW': 'allotCheckTask.html', //义乌-分配核查任务
+  'YH-ZKHC-HCRWLB': 'checkTaskList.html', //义乌-核查任务列表
   'YH-ZKK-YLZLKZZB_XQ': 'qualityControl.html',
-  'YH-SJBJ':'editableDetail.html'   //数据编辑
+  'YH-SJBJ': 'editableDetail.html', //数据编辑
+  'YH-ZKK-TMQXGSTJ': 'improveStatistics.html', //条目缺陷改善统计
+  "YH-ZKK-LCZKSYTJ": 'useStatistics.html', //临床质控使用统计
+  'YH-KSZR-TMQXGSTJ': 'improveStatisticsDept.html', //条目缺陷改善统计(科室)
+  "YH-KSZR-LCZKSYTJ": 'useStatisticsDept.html', //临床质控使用统计(科室)
 };
 
 //导出时间天数
 const exportTimeLimit = {
   defectTime: 90,
   normalTime: 7,
-  yiwuTime:30,
+  yiwuTime: 30,
 };
 
 //重写assign方法
 if (typeof Object.assign != 'function') {
-  Object.assign = function(target) {
+  Object.assign = function (target) {
     'use strict';
     if (target == null) {
       throw new TypeError('Cannot convert undefined or null to object');
@@ -99,9 +107,9 @@ if (typeof Object.assign != 'function') {
 
 window.console =
   window.console ||
-  (function() {
+  (function () {
     var c = {};
-    c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile = c.clear = c.exception = c.trace = c.assert = function() {};
+    c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile = c.clear = c.exception = c.trace = c.assert = function () { };
     return c;
   })();
 
@@ -118,7 +126,7 @@ const getUrlArgObject = function getQueryString(name) {
     return null;
   }
 };
-const getUrlArgObjectNew = function(name, srcUrl) {
+const getUrlArgObjectNew = function (name, srcUrl) {
   if (srcUrl.indexOf('?') == -1) {
     return '';
   }
@@ -131,13 +139,17 @@ const getUrlArgObjectNew = function(name, srcUrl) {
   return obj[name];
 };
 window.abortAjax = '';
-const post = function(url, data) {
+
+const post = function (url, data, opts) {
+  const token = localStorage.getItem('accessToken');
+  if(localStorage.getItem('toLogin')==='1'&&token){
+    //如果前面已经被标记为登录失效,接下来的请求都不发送
+    return new Promise(()=>{});
+  }
   let isPlacefile = getCookie('isPlacefile') || 1;
-  const token = getCookie('accessToken') || localStorage.getItem('accessToken');
   if (!token && window.location.href.indexOf('login') == -1) {
     setCookie('behosDateStart', '');
     setCookie('behosDateEnd', '');
-    window.location.href = '../login.html';
   }
   for (let i = 0; i < $('.typeFilter').children().length; i++) {
     if (
@@ -154,6 +166,7 @@ const post = function(url, data) {
     }
   }
   let need = window.location.href.indexOf('localhost') != -1;
+
   return new Utils((resolve, reject) => {
     abortAjax = $.ajax({
       method: 'post',
@@ -161,38 +174,112 @@ const post = function(url, data) {
       async: true,
       cache: false,
       processData: false,
-      data: JSON.stringify(Object.assign({}, data, { isPlacefile: isPlacefile })),
+      data: (opts && opts.needqs) ? qs.stringify(data) : JSON.stringify(Object.assign({}, data, {
+        isPlacefile: (opts && opts.noPlacefile?undefined:isPlacefile)
+      })),
       contentType: 'application/json; charset=UTF-8',
-      beforeSend: function(xmlHttp) {
-        xmlHttp.setRequestHeader('If-Modified-Since', '0');
-        xmlHttp.setRequestHeader('Cache-Control', 'no-cache');
-        xmlHttp.setRequestHeader('Authorization', token ? 'Bearer ' + token : '');
-      },
-      success: function(res) {
-        resolve({ data: res });
+      beforeSend: function (xmlHttp) {
+        if(url.indexOf("sys/user/getHospitalMark")===-1){
+		  xmlHttp.setRequestHeader('If-Modified-Since', '0');
+		  xmlHttp.setRequestHeader('Cache-Control', 'no-cache');
+		  xmlHttp.setRequestHeader('Authorization', token ? 'Bearer ' + token : '');
+        }
       },
-      error: function(error) {
-        const wd = window.parent.window || window;
-        if (error.status === 403 || error.status === 401) {
-          setCookie('behosDateStart', '');
-          setCookie('behosDateEnd', '');
-          $.alerModal({"message":"没有该权限",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-
-          // wd.location.href = "../login.html";
-        } else if (error.status === 500 || error.status === 501 || error.status === 404) {
-           $.alerModal({"message":'接口错误',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-
-            // wd.location.href = '../error.html?code=' + error.status;
+      success: function (resq) {
+        const doc = parent?parent.document:document;
+        //console.log($(doc).find(".alertModal:visible"))
+		//失效后不点知道了直接刷新处理:跳回登录页
+		if(localStorage.getItem('toLogin')==='1'&&$(doc).find(".alertModal:visible").length===0){
+		  (parent||window).location.href='login.html';
+		}
+        let res=resq;
+        if(typeof resq ==='string'){
+          res = JSON.parse(resq);
         }
+        const code = res.code;
+		const isOut = code === '10020011' || code === '10020012' || code === '10020013';
+        if(isOut){
+          //登录信息失效处理
+		  unloginPop(res.msg);
+        }else{
+		  resolve({
+			data: res
+		  });
+        }
+      },
+      error: function (error) {
+          if (error.status === 403 || error.status === 401) {
+            setCookie('behosDateStart', '');
+            setCookie('behosDateEnd', '');
+            if (!token && window.location.href.indexOf('login') == -1) {
+            } else {
+              if($(".alertModal:visible").length){
+                return;
+              }
+              $.alerModal({
+                "message": "没有该权限"+error.status,
+                type: "tip",
+                time: '1000',
+                isFather: true,
+                fatherWrapper: $("#mainBox", parent.document)
+              });
+            }
+          } else if (error.status === 500 || error.status === 501 || error.status === 404) {
+            $.alerModal({
+              "message": '接口错误',
+              type: "tip",
+              time: '1000',
+              isFather: true,
+              fatherWrapper: $("#mainBox", parent.document)
+            });
+          }
         reject(error);
       },
     });
   });
 };
 
+//登录失效弹窗处理
+function unloginPop(msg){
+  /*const isOut = code === '10020011' || code === '10020012' || code === '10020013';
+  if(isOut){*/
+  const isQcScore = parent&&parent.location.href.indexOf("qcScore.html")===-1;
+    if(self != top&&isQcScore){//子窗口并且不是病例列表
+	  const dialogmessage = {
+		iframemessage: 1,
+		data: msg
+	  }
+	  console.log('子窗口')
+	  window.parent.postMessage(JSON.stringify(dialogmessage), '*')
+    }else{
+	  console.log('父窗口')
+	  $.alerModal({
+		gobackBtn: true,
+		title: "提示",
+		type: "modal",
+		width: '470',
+		time: 1000,
+		cancalText: '我知道了',
+		isFather: true,
+		fatherWrapper: $("#mainBox", parent.document),
+		sureBtn: false,
+		message: msg || '登录过期',
+		callback: function () {
+          (parent||window).location.href = 'login.html'
+		}
+	  });
+	  //失效后不点知道了直接刷新处理标记
+      localStorage.setItem('toLogin',1);
+    }
+  /*}else{
+	callback()
+  }*/
+
+}
+
 // 导出
 const expJson = (url, data) => {
-  const token = getCookie('accessToken') || localStorage.getItem('accessToken');
+  const token = localStorage.getItem('accessToken');
   if (!token && window.location.href.indexOf('login') == -1) {
     setCookie('behosDateStart', '');
     setCookie('behosDateEnd', '');
@@ -227,7 +314,7 @@ function downloadExportedData(data, fileName) {
 }
 
 //判断浏览器是否为Ie8
-const isIe8 = function() {
+const isIe8 = function () {
   var DEFAULT_VERSION = 8.0;
   var ua = navigator.userAgent.toLowerCase();
   var isIE = ua.indexOf('msie') > -1;
@@ -239,7 +326,7 @@ const isIe8 = function() {
     return true;
   }
 };
-const setCookie = function(name, value) {
+const setCookie = function (name, value) {
   let Days = 30;
   let exp = new Date();
   exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
@@ -247,22 +334,22 @@ const setCookie = function(name, value) {
 };
 
 //读取cookies
-const getCookie = function(name) {
+const getCookie = function (name) {
   let arr,
     reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)');
   if ((arr = document.cookie.match(reg))) return unescape(arr[2]);
   else return null;
 };
-const setLocal = function(name, value) {
-    localStorage.setItem(name, value);
+const setLocal = function (name, value) {
+  localStorage.setItem(name, value);
 };
 
 //读取cookies
-const getLocal = function(name) {
-    return localStorage.getItem(name);
+const getLocal = function (name) {
+  return localStorage.getItem(name);
 };
 //删除cookies
-const delCookie = function(name) {
+const delCookie = function (name) {
   let exp = new Date();
   exp.setTime(exp.getTime() - 1);
   let cval = getCookie(name);
@@ -270,17 +357,17 @@ const delCookie = function(name) {
 };
 
 //弹窗关闭事件
-$('.modal .close').click(function() {
+$('.modal .close').click(function () {
   $('.modal').hide();
 });
 //计算容器高度
 function setBoxHeight() {
   const ht = window.innerHeight;
   const hw = window.innerWidth;
-  if(hw<1169){
-      $('.content-box').height(ht - 110 + 'px');
-  }else{
-      $('.content-box').height(ht - 60 + 'px');
+  if (hw < 1169) {
+    $('.content-box').height(ht - 110 + 'px');
+  } else {
+    $('.content-box').height(ht - 60 + 'px');
   }
   //$('.content-box').height(ht - 60 + 'px');
   $('.flaw-table').height(ht - 70 + 'px');
@@ -288,7 +375,7 @@ function setBoxHeight() {
   $('.scroll-table tbody').css('max-height', ht - 210 + 'px');
 }
 setBoxHeight();
-$(window).resize(function() {
+$(window).resize(function () {
   setBoxHeight();
 });
 
@@ -311,17 +398,18 @@ function focusMenuItem(code) {
   //console.log($(parent.document).find(".menu .page[code='YH-ZKK-GMKQXZB_XQ']"))
   ele.click();
 }
+
 function emptyBox(name, showNum, type) {
   let showNumer = showNum || 30;
   let str = `<tr><td colspan="${showNumer}" style="text-align: center;color: #aaa">
-  <img style="margin-top:50px;width:${type ? '110' : '140'}px;" src="${
-    type ? require('../images/dataing.png') : require('../images/empty1.png')
-  }" />
+  <img style="margin-top:50px;width:${type ? '110' : '140'}px;" src="${type ? require('../images/dataing.png') : require('../images/empty1.png')
+    }" />
   <p style="margin-top:20px;margin-bottom:30px;color:#ccc;position:relative;left:5px;">${name ||
     '暂无数据~'}</p>
   </td></tr>`;
   return str;
 }
+
 function picEmptyData(dom, str) {
   let empty = `<div class="emptyBoxHome">
       <img src="${require('../images/emptyHome.png')}">
@@ -329,9 +417,13 @@ function picEmptyData(dom, str) {
   </div>
   `;
   $(dom)
-    .css({ position: 'relative', display: 'block' })
+    .css({
+      position: 'relative',
+      display: 'block'
+    })
     .html(empty);
 }
+
 function setTitleTxt(dom, from) {
   if (!from) {
     $(dom ? dom : '.partTitle')
@@ -450,7 +542,7 @@ function setDatePicker(picker1, picker2, mode, startDateDefault, endDateDefault)
   }
 }
 
-//mode=1获取开始时间,mode=1获取结束时间
+//mode=1获取开始时间,mode=2获取结束时间
 function getPickerDate(picker, mode) {
   if (!picker) {
     return;
@@ -464,6 +556,7 @@ function getPickerDate(picker, mode) {
     // return date.replace(/\//g,'-') + ' 23:59:59'
   }
 }
+
 function isMac() {
   var isMac = /macintosh|mac os x/i.test(navigator.userAgent);
   return isMac;
@@ -512,31 +605,50 @@ function initScroll(el, sliderDir, sliderMode, top) {
   }
 }
 //获取筛选分值、任务来源列表
-function getScoreTabList(fn,isSource){
-    /*let val='';
-    if(isSource){
-        val = localStorage.getItem('sourceList');
-    }else{
-        val = localStorage.getItem('valueList');
-    }
+function getScoreTabList(fn, isSource) {
+  /*let val='';
+  if(isSource){
+      val = localStorage.getItem('sourceList');
+  }else{
+      val = localStorage.getItem('valueList');
+  }
 
-    if((val||'').trim()){
-        fn(isSource?JSON.parse(val):val.split(","));
-        return;
-    }*/
-    post(ywCheckApi.getCheckType).then(res =>{
-        if(res.data.code == '0'){
-            const data = res.data.data;
-            //localStorage.setItem('sourceList',JSON.stringify(data.source));
-            //localStorage.setItem('valueList',data.value.join(","));
-            fn(isSource?data.source:data.value)
-        }else{
-            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-        }
-    }).catch((e) =>{
-        $.alerModal({"message":'获取任务来源及筛选分值数据失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-    })
+  if((val||'').trim()){
+      fn(isSource?JSON.parse(val):val.split(","));
+      return;
+  }*/
+  post(ywCheckApi.getCheckType).then(res => {
+    if (res.data.code == '0') {
+      const data = res.data.data;
+      //localStorage.setItem('sourceList',JSON.stringify(data.source));
+      //localStorage.setItem('valueList',data.value.join(","));
+      fn(isSource ? data.source : data.value)
+    } else {
+      const token = localStorage.getItem('accessToken');
+      if (!token && window.location.href.indexOf('login') == -1) {
+        //alert('无token判断,跳回登录')
+      } else {
+        $.alerModal({
+          "message": res.data.msg,
+          type: "tip",
+          time: '1000',
+          isFather: true,
+          fatherWrapper: $("#mainBox", parent.document)
+        });
+      }
+
+    }
+  }).catch((e) => {
+    $.alerModal({
+      "message": '获取任务来源及筛选分值数据失败',
+      type: "tip",
+      time: '1000',
+      isFather: true,
+      fatherWrapper: $("#mainBox", parent.document)
+    });
+  })
 }
+
 function listenScroll(dom) {
   $(dom ? dom : '.container').scroll(() => {
     $.datepicker._hideDatepicker($('#datepicker')[0]);
@@ -555,14 +667,21 @@ function listenScroll(dom) {
 }
 //获取隐藏/替换logo参数
 function getLogoParam() {
-    const otherLogo =  window.parent.location.search.indexOf("adLg=")>-1;
-    const hideLogo =  window.parent.location.search.indexOf("hideLg=")>-1;
-    const otherLogoPm = otherLogo ? '&adLg=1' : '';
-    const hideLogoPm = hideLogo ? '&hideLg=1' : '';
-    return otherLogoPm+hideLogoPm;
+  const otherLogo = window.parent.location.search.indexOf("adLg=") > -1;
+  const hideLogo = window.parent.location.search.indexOf("hideLg=") > -1;
+  const otherLogoPm = otherLogo ? '&adLg=1' : '';
+  const hideLogoPm = hideLogo ? '&hideLg=1' : '';
+  return otherLogoPm + hideLogoPm;
 }
+
 function toast(msg) {
-  return $.alerModal({ "message": msg, type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
+  return $.alerModal({
+    "message": msg,
+    type: "tip",
+    time: '1000',
+    isFather: true,
+    fatherWrapper: $("#mainBox", parent.document)
+  });
 }
 const explainTitle = {
   科室编码: 'deptId',
@@ -618,4 +737,4 @@ module.exports = {
   getScoreTabList,
   getLogoParam,
   toast
-};
+};

+ 1 - 1
webpack.config.js

@@ -7,7 +7,7 @@ const CopyWebpackPlugin = require('copy-webpack-plugin');
 const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
 const webpack = require('webpack');
 const glob = require('glob');
-const proxyHost = "http://192.168.2.236:5858";
+const proxyHost = "http://192.168.2.241:5858";
 // const proxyHost = "http://192.168.2.241:5858";
 // const proxyHost = "http://192.168.4.222:5858";
 // const proxyHost = "http://192.168.3.117:5858";//铁钢