瀏覽代碼

Merge branch 'test' into byll

luolei 5 年之前
父節點
當前提交
9e12458293

+ 37 - 2
src/css/qcList.less

@@ -46,6 +46,24 @@ table{
         font-weight: 500;
         white-space: nowrap;
     }
+    th[code]{
+        cursor: pointer;
+        &:after{
+            content:"";
+            display:inline-block;
+            width: 11px;
+            height: 14px;
+            margin-left: 4px;
+            vertical-align: middle;
+            background: url("../images/grey.png");
+        }
+        &.asc:after{
+            background: url("../images/up_blue.png");
+        }
+        &.desc:after{
+            background: url("../images/down_blue.png");
+        }
+    }
     td{
         font-size: 14px;
         font-weight: 400;
@@ -122,7 +140,7 @@ table{
 .filterDropList{
     position: absolute;
     right: 0;
-    height: 200px;
+    max-height: 200px;
     overflow-y: auto;
     background: #fff;
     display: none;
@@ -133,6 +151,10 @@ table{
         padding: 0 10px;
     }
 }
+.deptList{
+    width: 160px;
+    max-height: 400px;
+}
 .levelList{
     width: 120px;
     height: 200px;
@@ -141,7 +163,7 @@ table{
         cursor: pointer;
     }
 }
-.selectLevel{
+.selectLevel,.selectDept{
     display: inline-block;
     position: relative;
     width:120px;
@@ -152,6 +174,10 @@ table{
     box-sizing: border-box;
     cursor: pointer;
 }
+.selectDept{
+    width: 160px;
+}
+
 .filter{
     display: inline-block;
     width:60px;
@@ -215,6 +241,15 @@ table{
     cursor: pointer;
 }
 
+.deptItem:hover{
+    background-color: #EEF4FF;
+    cursor: pointer;
+}
+.ellipsis{
+    overflow: hidden;
+    text-overflow:ellipsis;
+    white-space: nowrap;
+}
 
 
 .pagination{

+ 332 - 0
src/css/qcListDept.less

@@ -0,0 +1,332 @@
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+ul,li{
+    list-style: none;
+}
+h2{
+    width: 100%;
+    box-sizing: border-box;
+    background-color: #fff;
+    z-index: 20;
+    height: 44px;
+    line-height: 44px;
+    padding: 0 0 0 15px;
+    border-bottom: 1px solid #E2E5EF;
+    font-size: 16px;
+    font-weight: bold   ;
+    letter-spacing: 1px;
+}
+.main-body{
+    margin: 20px 0;
+    padding: 0 35px;
+    min-width: 1090px;
+    /*width: 100%;*/
+}
+table{
+    width: 100%;
+    min-width: 1090px;
+    border:1px solid #E2E5EF;
+    border-collapse: collapse;
+    thead{
+        background: #EFF0F9;
+       
+    }
+    th,td{
+        height: 40px;
+        box-sizing: border-box;
+        padding: 10px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+    }
+    th{
+        font-size: 14px;
+        font-weight: 500;
+        white-space: nowrap;
+    }
+    td{
+        font-size: 14px;
+        font-weight: 400;
+        white-space: nowrap;
+    }
+    .moduleNumber{
+        text-align: center;
+    }
+    .scoreOperaItem{
+        width: 50px;
+        cursor: pointer;
+    }
+    
+}
+.tabFoot{
+    height: 40px;
+    /*border: 1px solid #E2E5EF;
+    border-top: none;
+    box-sizing: border-box;*/
+}
+.scoreOpera{
+    height: 50px;
+    line-height: 50px;
+    margin: 0 20px 0 0;
+    cursor: pointer;
+    img{
+        margin: 0 10px 0 0;
+    }
+}
+
+.recordScoreOperaBtn{
+    cursor: pointer;
+    color: #5A8EEE;
+}
+.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 #5A8EEE;
+    color: #5A8EEE;
+}
+.filterBox{
+    margin-bottom: 15px;
+}
+.filterItem{
+    position: relative;
+    display: inline-block;
+    float: left;
+    height: 40px;
+    line-height: 40px;
+    margin: 0 20px 15px 0;
+    span{
+        display: inline-block;
+        line-height: 40px;
+        position: relative;
+    }
+    input{
+        width:120px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        outline: none;
+        margin-right: 10px;
+        padding: 0 10px;
+        box-sizing: border-box;
+    }
+}
+
+.filterDropList{
+    position: absolute;
+    right: 0;
+    max-height: 200px;
+    overflow-y: auto;
+    background: #fff;
+    display: none;
+    border: 1px solid #e4e7ed;
+    box-shadow: 0 2px 12px 0 #e4e7ed;
+    z-index: 2;
+    li{
+        padding: 0 10px;
+    }
+}
+.deptList{
+    width: 160px;
+    max-height: 400px;
+}
+.levelList{
+    width: 120px;
+    height: 200px;
+    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:#5A8EEE;
+    border-radius:4px;
+    color: #fff;
+    text-align: center;
+    line-height: 36px;
+    position: relative;
+    top: 2px;
+    cursor: pointer;
+    float: left;
+}
+.arrow{
+    position: absolute;
+    width: 10px;
+    top: 16px;
+    right: 10px;
+}
+.iconCheck{
+    width: 14px;
+}
+.fl{
+    float: left;
+}
+.clearfix:after {
+    content: '';
+    height: 0;
+    line-height: 0;
+    display: block;
+    visibility: hidden;
+    clear: both;
+}
+.clearfix{
+    zoom:1
+}
+.divide{
+    margin: 0 10px;
+}
+.datapickerBox{
+    position: relative;
+    display: inline-block;
+    width: 120px;
+    height: 40px;
+    input{
+        position: absolute;
+    }
+}
+.iconCalen{
+    position: absolute;
+    width: 15px;
+    top: 12px;
+    right: 10px;
+}
+.textCenter{
+    text-align: center;
+}
+.patientNameSpan{
+    color: #5A8EEE;
+    cursor: pointer;
+}
+
+.deptItem:hover{
+    background-color: #EEF4FF;
+    cursor: pointer;
+}
+.ellipsis{
+    overflow: hidden;
+    text-overflow:ellipsis;
+    white-space: nowrap;
+}
+
+
+.pagination{
+    margin: 35px 0 0 0  ;
+    text-align: right;
+}
+.totalSum{
+    font-size:12px;
+    line-height:17px;
+    color: #777777;
+    margin-right: 20px;
+}
+.pageNum,.prePage,.nextPage, .more{
+    display: inline-block;
+    width: 20px;
+    cursor: pointer;
+    margin: 0 20px 0 0;
+    text-align: center;
+    color: #777;
+}
+.prePage,.nextPage{
+    img{
+        position: relative;
+        top: 0px   ;
+    }
+}
+ .more{
+    cursor: not-allowed;
+}
+.arrowPage{
+    width: 6px;
+}
+.activePage{
+    color: #5A8EEE;
+}
+
+
+
+.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: #5a8eee !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;
+}

+ 339 - 0
src/css/qcListPerson.less

@@ -0,0 +1,339 @@
+.container{
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+}
+ul,li{
+    list-style: none;
+}
+h2{
+    width: 100%;
+    box-sizing: border-box;
+    background-color: #fff;
+    z-index: 20;
+    height: 44px;
+    line-height: 44px;
+    padding: 0 0 0 15px;
+    border-bottom: 1px solid #E2E5EF;
+    font-size: 16px;
+    font-weight: bold   ;
+    letter-spacing: 1px;
+}
+.main-body{
+    margin: 20px 0;
+    padding: 0 35px;
+    min-width: 1090px;
+    /*width: 100%;*/
+}
+table{
+    width: 100%;
+    min-width: 1090px;
+    border:1px solid #E2E5EF;
+    border-collapse: collapse;
+    thead{
+        background: #EFF0F9;
+       
+    }
+    th,td{
+        height: 40px;
+        box-sizing: border-box;
+        padding: 10px;
+        border:1px solid #E2E5EF;
+        border-collapse: collapse;
+    }
+    th{
+        font-size: 14px;
+        font-weight: 500;
+        white-space: nowrap;
+    }
+    td{
+        font-size: 14px;
+        font-weight: 400;
+        white-space: nowrap;
+    }
+    .moduleNumber{
+        text-align: center;
+    }
+    .scoreOperaItem{
+        width: 50px;
+        cursor: pointer;
+    }
+    
+}
+.tabFoot{
+    height: 40px;
+    /*border: 1px solid #E2E5EF;
+    border-top: none;
+    box-sizing: border-box;*/
+}
+.scoreOpera{
+    height: 50px;
+    line-height: 50px;
+    margin: 0 20px 0 0;
+    cursor: pointer;
+    img{
+        margin: 0 10px 0 0;
+    }
+}
+
+.recordScoreOperaBtn{
+    cursor: pointer;
+    color: #5A8EEE;
+}
+.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 #5A8EEE;
+    color: #5A8EEE;
+}
+.filterBox{
+    margin-bottom: 15px;
+}
+.filterItem{
+    position: relative;
+    display: inline-block;
+    float: left;
+    height: 40px;
+    line-height: 40px;
+    margin: 0 20px 15px 0;
+    span{
+        display: inline-block;
+        line-height: 40px;
+        position: relative;
+    }
+    input{
+        width:120px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        outline: none;
+        margin-right: 10px;
+        padding: 0 10px;
+        box-sizing: border-box;
+    }
+}
+
+.filterDropList{
+    position: absolute;
+    right: 0;
+    max-height: 200px;
+    overflow-y: auto;
+    background: #fff;
+    display: none;
+    border: 1px solid #e4e7ed;
+    box-shadow: 0 2px 12px 0 #e4e7ed;
+    z-index: 2;
+    li{
+        padding: 0 10px;
+    }
+}
+.deptList{
+    width: 160px;
+    max-height: 400px;
+}
+.levelList{
+    width: 120px;
+    height: 200px;
+    li:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+}
+.selectLevel,.selectDept,.selectDoctor{
+    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;
+}
+.doctorFilter{
+    span{
+        float: left;
+    }
+}
+.selectDoctor{
+    cursor: default;
+}
+
+.filter{
+    display: inline-block;
+    width:60px;
+    height:36px;
+    background:#5A8EEE;
+    border-radius:4px;
+    color: #fff;
+    text-align: center;
+    line-height: 36px;
+    position: relative;
+    top: 2px;
+    cursor: pointer;
+    float: left;
+}
+.arrow{
+    position: absolute;
+    width: 10px;
+    top: 16px;
+    right: 10px;
+}
+.iconCheck{
+    width: 14px;
+}
+.fl{
+    float: left;
+}
+.clearfix:after {
+    content: '';
+    height: 0;
+    line-height: 0;
+    display: block;
+    visibility: hidden;
+    clear: both;
+}
+.clearfix{
+    zoom:1
+}
+.divide{
+    margin: 0 10px;
+}
+.datapickerBox{
+    position: relative;
+    display: inline-block;
+    width: 120px;
+    height: 40px;
+    input{
+        position: absolute;
+    }
+}
+.iconCalen{
+    position: absolute;
+    width: 15px;
+    top: 12px;
+    right: 10px;
+}
+.textCenter{
+    text-align: center;
+}
+.patientNameSpan{
+    color: #5A8EEE;
+    cursor: pointer;
+}
+
+.deptItem:hover{
+    background-color: #EEF4FF;
+    cursor: pointer;
+}
+.ellipsis{
+    overflow: hidden;
+    text-overflow:ellipsis;
+    white-space: nowrap;
+}
+
+
+.pagination{
+    margin: 35px 0 0 0  ;
+    text-align: right;
+}
+.totalSum{
+    font-size:12px;
+    line-height:17px;
+    color: #777777;
+    margin-right: 20px;
+}
+.pageNum,.prePage,.nextPage, .more{
+    display: inline-block;
+    width: 20px;
+    cursor: pointer;
+    margin: 0 20px 0 0;
+    text-align: center;
+    color: #777;
+}
+.prePage,.nextPage{
+    img{
+        position: relative;
+        top: 0px   ;
+    }
+}
+ .more{
+    cursor: not-allowed;
+}
+.arrowPage{
+    width: 6px;
+}
+.activePage{
+    color: #5A8EEE;
+}
+
+
+
+.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: #5a8eee !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;
+}

+ 14 - 13
src/css/roleManager.less

@@ -10,23 +10,24 @@
         padding: 0 10px;
         height: 50px;
         line-height: 50px;
+        cursor: pointer;
         &:hover {
             background-color: #F0F5FF;
         }
     }
-    .editRole {
-        float: right;
-        width: 52px;
-        height: 30px;
-        line-height: 30px;
-        color: #5A8EEE;
-        border: 1px solid #5A8EEE;
-        border-radius: 4px;
-        text-align: center;
-        position: relative;
-        top: 10px;
-        cursor: pointer;
-    }
+    // .editRole {
+    //     float: right;
+    //     width: 52px;
+    //     height: 30px;
+    //     line-height: 30px;
+    //     color: #5A8EEE;
+    //     border: 1px solid #5A8EEE;
+    //     border-radius: 4px;
+    //     text-align: center;
+    //     position: relative;
+    //     top: 10px;
+    //     cursor: pointer;
+    // }
 }
 .rightMenu {
     position: absolute;

+ 32 - 14
src/html/qcList.html

@@ -22,6 +22,22 @@
                     <span>病人姓名:</span>
                     <input class="patientNameInp" type="text" placeholder="请输入病人姓名">
                 </span>
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <span class="selectDept"> 
+                        全部
+                    </span>
+                   
+                    <ul class="deptList filterDropList"></ul>
+                </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>
                 <span class="filterItem typeFilter clearfix">
                     <span class="fl">入院日期:</span>
                     <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" /></span>
@@ -46,26 +62,28 @@
                     <thead>
                     <th class="textCenter" ></th>
                     <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
-                    <th class="beHospitalId textCenter">病历号</th>
-                    <th class="patientNo textCenter">病案号</th>
-                    <th class="patientName textCenter" style="width: 100px;">病人姓名</th>
-                    <th class="patientSex textCenter">性别</th>
-                    <th class="patientage textCenter">年龄</th>
-                    <th class="bedNum textCenter">床号</th>
-                    <th class="inHospitalDate textCenter">入院日期</th>
-                    <th class="outHospitalDate textCenter">出院日期</th>
-                    <th class="doctorName textCenter">主治医生</th>
-                    <th class="deptName textCenter">科室</th>
-                    <th class="recordLevel textCenter">病历等级</th>
-                    <th class="recordScore textCenter">病历得分</th>
-                    <th class="scoreTime textCenter">评分时间</th>
+                    <th class="beHospitalId textCenter" code="behospital_code">病历号</th>
+                    <th class="patientNo textCenter" code="file_code">病案号</th>
+                    <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
+                    <th class="patientSex textCenter" code="sex">性别</th>
+                    <th class="patientage textCenter" code="age">年龄</th>
+                    <th class="bedNum textCenter" code="bed_code">床号</th>
+                    <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
+                    <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
+                    <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
+                    <th class="doctorName textCenter" code="doctor_name">主管医生</th>
+                    <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
+                    <th class="deptName textCenter" code="beh_dept_name">科室</th>
+                    <th class="recordLevel textCenter" code="level">病历等级</th>
+                    <th class="recordScore textCenter" code="score_res">病历得分</th>
+                    <th class="scoreTime textCenter" code="grade_time">评分时间</th>
                     </thead>
                     <tbody>
 
                     </tbody>
                     <tfoot>
                     <tr>
-                        <td colspan="15">
+                        <td colspan="17">
                             <div class="tabFoot">
                                 <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
                                 <span class="recordScoreBtn">评分</span>

+ 108 - 0
src/html/qcListDept.html

@@ -0,0 +1,108 @@
+<!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">
+        <h2>质控评分</h2>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>病历号:</span>
+                    <input class="patientNumInp" type="text" placeholder="请输入病历号">
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>病人姓名:</span>
+                    <input class="patientNameInp" type="text" placeholder="请输入病人姓名">
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <span class="selectDept"> 
+                        全部
+                    </span>
+                   
+                    <ul class="deptList filterDropList"></ul>
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>医生姓名:</span>
+                    <input class="doctorInp" type="text" placeholder="请输入医生姓名">
+                </span>
+                <span class="filterItem doctorFilter">
+                    <span>医生工号:</span>
+                    <input class="doctorNumInp" type="text" placeholder="请输入医生工号">
+                </span>
+                <span class="filterItem typeFilter clearfix">
+                    <span class="fl">入院日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" /></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" /></span>
+                </span>
+                <span class="filterItem">
+                    <span>病历等级:</span>
+                    <span class="selectLevel">全部</span>
+                    <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>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="textCenter" ></th>
+                    <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
+                    <th class="beHospitalId textCenter" code="behospital_code">病历号</th>
+                    <th class="patientNo textCenter" code="file_code">病案号</th>
+                    <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
+                    <th class="patientSex textCenter" code="sex">性别</th>
+                    <th class="patientage textCenter" code="age">年龄</th>
+                    <th class="bedNum textCenter" code="bed_code">床号</th>
+                    <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
+                    <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
+                    <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
+                    <th class="doctorName textCenter" code="doctor_name">主管医生</th>
+                    <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
+                    <th class="deptName textCenter" code="beh_dept_name">科室</th>
+                    <th class="recordLevel textCenter" code="level">病历等级</th>
+                    <th class="recordScore textCenter" code="score_res">病历得分</th>
+                    <th class="scoreTime textCenter" code="grade_time">评分时间</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                    <tfoot>
+                    <tr>
+                        <td colspan="17">
+                            <div class="tabFoot">
+                                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                                <span class="recordScoreBtn">评分</span>
+                            </div>
+                        </td>
+                    </tr>
+                    </tfoot>
+                </table>
+            </div>
+
+            <!--<div class="tabFoot">
+                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                <span class="recordScoreBtn">评分</span>
+            </div>-->
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 108 - 0
src/html/qcListPerson.html

@@ -0,0 +1,108 @@
+<!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">
+        <h2>质控评分</h2>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>病历号:</span>
+                    <input class="patientNumInp" type="text" placeholder="请输入病历号">
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>病人姓名:</span>
+                    <input class="patientNameInp" type="text" placeholder="请输入病人姓名">
+                </span>
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <span class="selectDept"> 
+                        全部
+                    </span>
+                   
+                    <ul class="deptList filterDropList"></ul>
+                </span>
+                <span class="filterItem doctorFilter">
+                    <span>医生:</span>
+                    <span class="selectDoctor"> 
+                        
+                    </span>
+                    <!-- <input class="doctorInp" type="text" placeholder="请输入医生姓名"> -->
+                </span>
+               
+                <span class="filterItem typeFilter clearfix">
+                    <span class="fl">入院日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" /></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" /></span>
+                </span>
+                <span class="filterItem">
+                    <span>病历等级:</span>
+                    <span class="selectLevel">全部</span>
+                    <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>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                    <th class="textCenter" ></th>
+                    <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>
+                    <th class="beHospitalId textCenter" code="behospital_code">病历号</th>
+                    <th class="patientNo textCenter" code="file_code">病案号</th>
+                    <th class="patientName textCenter" code="name" style="width: 100px;">病人姓名</th>
+                    <th class="patientSex textCenter" code="sex">性别</th>
+                    <th class="patientage textCenter" code="age">年龄</th>
+                    <th class="bedNum textCenter" code="bed_code">床号</th>
+                    <th class="inHospitalDate textCenter" code="behospital_date">入院日期</th>
+                    <th class="outHospitalDate textCenter" code="leave_hospital_date">出院日期</th>
+                    <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
+                    <th class="doctorName textCenter" code="doctor_name">主管医生</th>
+                    <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
+                    <th class="deptName textCenter" code="beh_dept_name">科室</th>
+                    <th class="recordLevel textCenter" code="level">病历等级</th>
+                    <th class="recordScore textCenter" code="score_res">病历得分</th>
+                    <th class="scoreTime textCenter" code="grade_time">评分时间</th>
+                    </thead>
+                    <tbody>
+
+                    </tbody>
+                    <tfoot>
+                    <tr>
+                        <td colspan="17">
+                            <div class="tabFoot">
+                                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                                <span class="recordScoreBtn">评分</span>
+                            </div>
+                        </td>
+                    </tr>
+                    </tfoot>
+                </table>
+            </div>
+
+            <!--<div class="tabFoot">
+                <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="" alt="checkbox">全选</span>
+                <span class="recordScoreBtn">评分</span>
+            </div>-->
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

二進制
src/images/down_blue.png


二進制
src/images/grey.png


二進制
src/images/up_blue.png


+ 5 - 1
src/js/api.js

@@ -5,8 +5,12 @@ const api = {
     getQcCasesEntryAll:'/qc/casesEntryHospital/getQcCasesEntryAll',
     updataQcCasesEntry: '/qc/casesEntryHospital/updataQcCasesEntry',
     qcList:'/qc/behospitalInfo/page',
+    qcListByDept:'/qc/behospitalInfo/page_dept',
+    qcListByPerson:'/qc/behospitalInfo/page_person',
     saveQcCases:'/qc/cases/saveQcCases',
-    recordScore:'/qc/behospitalInfo/analyze'
+    recordScore:'/qc/behospitalInfo/analyze',
+    getDeptList:'/bas/dept/getList',
+    getDeptListUser:'/bas/dept/listForUser',
 }
 module.exports = {
     api

+ 6 - 2
src/js/index.js

@@ -4,7 +4,7 @@ require('jquery-templates');
 const md5 = require('js-md5');
 require("./modal.js")
 const {api,post,pageMap,delCookie} = require('./utils.js');
-
+let userInfo={};
 $(function(){
   getMenu();
   //菜单展开收起
@@ -53,7 +53,10 @@ function initMenu(data,userInfo){
     $(".menu .active").removeClass('active');
     $(this).addClass("active");
     const code = $(this).attr("code");
-    const url = './'+pageMap[code];
+    let url = './'+pageMap[code];
+    if(code === 'YH-BLZK-ZKPFGR'){
+      url += `?doctorName=${userInfo.linkman}`
+    }
     $("#contentIframe").attr("src",url);
   });
 }
@@ -62,6 +65,7 @@ function getMenu(){
     if(res.data.code==='0'){
       const data = res.data.data;
       initMenu(data.menuWrappers,data.userLoginDTO);
+      userInfo = data.userLoginDTO
     }
   });
 };

+ 95 - 15
src/js/qcList.js

@@ -16,7 +16,10 @@ const arrowLeft= require("./../images/arrow_left.png")
 const arrowRight = require("./../images/arrow_right.png")
 
 $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
-let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,nameTemp = "", behospitalCodeTemp="",levelTemp=""
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc=[],data_asc=[];
 
 $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
 $('.iconCalen').on("mouseenter", function(e){
@@ -34,6 +37,11 @@ function getTabData(activePage){
         behospitalCode: behospitalCode,
         name: name, //条目名
         level:level,//病历等级
+        deptId: deptId,
+        asc:data_asc,     //升序
+        desc:data_desc,       //降序
+        doctorName: doctorName,
+        doctorCode: doctorNum,
         behosDateStart: behosDateStart, //1-单项否决 0-非
         behosDateEnd: behosDateEnd, //0-未启用 1-启用
         size: 15
@@ -78,6 +86,9 @@ $(".filter").on("click", function(e){
     name = nameTemp
     behospitalCode = behospitalCodeTemp
     level = levelTemp
+    deptId = deptIdTemp
+    doctorName = doctorNameTemp
+    doctorNum = doctorNumTemp
     getTabData(1)
 })
 function renderTab(data){
@@ -100,7 +111,9 @@ function renderTab(data){
                 <td  class="textCenter">${item.bedCode || "-"}</td>
                 <td  class="textCenter">${item.behospitalDate&&item.behospitalDate.slice(0,10) || "-"}</td>
                 <td  class="textCenter">${item.leaveHospitalDate&&item.leaveHospitalDate.slice(0,10)|| "-"}</td>
+                <td  class="textCenter">${item.behDoctorName   || "-"}</td>
                 <td  class="textCenter">${item.doctorName || "-"}</td>
+                <td  class="textCenter">${item.directorDoctorName || "-"}</td>
                 <td  class="textCenter">${item.behDeptName || "-"}</td>
                 <td  class="textCenter">${item.level || "-"}</td>
                 <td  class="textCenter">${item.scoreRes || "-"}</td>
@@ -146,6 +159,8 @@ function bindScoreDetail(){
 //选择病历等级
 $('.selectLevel').on("click", function(e){
     e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
     const showList =  $(".levelList ").css("display")
     if(showList == "none" ||!showList){
         $(".levelList ").css("display","block")
@@ -202,6 +217,60 @@ function bindOperaAll(){
         renderTab(tabList)
     })
 }
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+//获取科室列表
+getDeptList()
+function getDeptList(){
+    post(api.getDeptList,{inputStr:""}).then(res =>{
+        if(res.data.code == '0'){
+           const  deptList = res.data.data
+           rendeDeptList(deptList)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+    bindDeptSelect()
+}
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
 function loading(){
     const str = `
     <div class="loadingBox">
@@ -211,19 +280,6 @@ function loading(){
     `
     $("#mainBox", parent.document).append(str)
 }
-function dialog(msg){
-    const str = `
-    <div class="dialogBox">
-            <div class="dialogBoxMask"></div>
-            <p class="dialogBoxMsg"> ${msg}</p>
-           
-    </div>
-    `
-    $("#mainBox", parent.document).append(str)
-}
-function removeDialog(){
-    $("#mainBox .dialogBox", parent.document).remove()
-}
 function hideLoading(){
     $("#mainBox .loadingBox", parent.document).remove()
 }
@@ -244,6 +300,22 @@ $('.recordScoreBtn').on("click",function(e){
         }
     }
 })
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+    console.log(code)
+});
 function recordScore(behospitalCode,totalNum){
     const param = {
         behospitalCode: behospitalCode
@@ -272,7 +344,14 @@ $(".patientNameInp").on("input", function(e){
     const val = $(this).val().trim()
     nameTemp = val
 })
-
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
 $(function() {
     $.datepicker.regional['zh-CN'] = {
     clearText: '清除',
@@ -382,6 +461,7 @@ function renderPagination(totalPage,activePage,totalNum){
 
 $(document).on("click", function(){
     $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
     $(".selectLevel .arrow").attr("src",iconDown)
     
 })

+ 465 - 0
src/js/qcListDept.js

@@ -0,0 +1,465 @@
+const $ = require('jquery');
+require("../css/qcListDept.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,nameTemp = "",
+  behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNameTemp="", doctorNum="", doctorNumTemp="",data_desc=[],data_asc=[];
+
+$('.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()
+})
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        behospitalCode: behospitalCode,
+        name: name, //条目名
+        level:level,//病历等级
+        deptId: deptId,
+        asc:data_asc,     //升序
+        desc:data_desc,       //降序
+        doctorName: doctorName,
+        doctorCode: doctorNum,
+        behosDateStart: behosDateStart, //1-单项否决 0-非
+        behosDateEnd: behosDateEnd, //0-未启用 1-启用
+        size: 15
+    }
+    post(api.qcListByDept,param).then(res =>{
+        if(res.data.code == '0'){
+            tabList = res.data.data.records
+            const totalPage = res.data.data.pages
+            const totalNum = res.data.data.total
+            renderTab(tabList)
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    behosDateStart = $("#datepicker").val().trim()
+    behosDateEnd = $("#datepicker2").val().trim()
+    const start = new Date(behosDateStart).getTime()
+    const end = new Date(behosDateEnd).getTime()
+    if(start > end){
+        $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    }
+    if(behosDateStart){
+        behosDateStart = behosDateStart.replace(/\//g,'-') + ' 00:00:00'
+    }
+    if(behosDateEnd){
+        behosDateEnd = behosDateEnd.replace(/\//g,'-') + ' 23:59:59'
+    }
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    doctorName = doctorNameTemp
+    doctorNum = doctorNumTemp
+    getTabData(1)
+})
+$("th[code]").on("click",function(e){
+  const code=$(this).attr("code");
+  if(data_asc[0]===code){
+    data_desc=[code];
+    data_asc=[];
+  }else{
+    data_desc=[];
+    data_asc=[code];
+  }
+  getTabData(1);
+  console.log(code)
+});
+function renderTab(data){
+    let str = ``
+    let hasSelectAll = true
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        if(!item.hasSelect){
+            hasSelectAll = false
+        }
+        str += `
+            <tr  data-index=${i}>
+                <td class="scoreOperaItem textCenter">${item.hasSelect ? `<img class="iconCheck" src=${iconCheck} />`:`<img class="iconCheck" src=${iconUnCheck} />`}</td>
+                <td  class="recordScoreOperaBtn textCenter">评分</td>
+                <td >${item.behospitalCode || "-"}</td>
+                <td>${item.fileCode || "-"}</td>
+                <td  class="textCenter"><span  data-index=${i} class="patientNameSpan">${item.name || "-"}<span></td>
+                <td  class="textCenter">${item.sex || "-"}</td>
+                <td  class="textCenter">${item.age || "-"}</td>
+                <td  class="textCenter">${item.bedCode || "-"}</td>
+                <td  class="textCenter">${item.behospitalDate&&item.behospitalDate.slice(0,10) || "-"}</td>
+                <td  class="textCenter">${item.leaveHospitalDate&&item.leaveHospitalDate.slice(0,10)|| "-"}</td>
+                <td  class="textCenter">${item.behDoctorName   || "-"}</td>
+                <td  class="textCenter">${item.doctorName || "-"}</td>
+                <td  class="textCenter">${item.directorDoctorName || "-"}</td>
+                <td  class="textCenter">${item.behDeptName || "-"}</td>
+                <td  class="textCenter">${item.level || "-"}</td>
+                <td  class="textCenter">${item.scoreRes || "-"}</td>
+                <td  class="textCenter">${item.gradeTime&&item.gradeTime.slice(0,10) || "-"}</td>
+            </tr>
+        `
+    }
+    if(data.length === 0){
+        hasSelectAll = false
+    }
+    if(hasSelectAll){
+        $('.scoreOpera img').attr("src" ,iconCheck)
+        $('.scoreOpera').attr("data-selectall",true)
+    }else{
+        $('.scoreOpera img').attr("src" ,iconUnCheck)
+        $('.scoreOpera').attr("data-selectall",false)
+    }
+    $('tbody').html(str)
+    bindScoreOperaItem()
+    bindRecordScoreOper()
+    bindScoreDetail()
+}
+
+function scoreDetail(id,age){
+    window.open(`./qcScore.html?id=${id}&age=${age}`)
+}
+function bindScoreDetail(){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const id = tabList[index].behospitalCode
+        const age = tabList[index].age
+        const noScore = tabList[index].level == '未评分'
+        if(noScore){
+            $.alerModal({"message":'请先进行评分!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            return
+        } else{
+            scoreDetail(id,age)
+        }
+       
+    })
+}
+
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+bindOperaAll()
+function bindScoreOperaItem(){
+    $(".scoreOperaItem").on("click",  function(e){
+        const index = $(this).parent().attr("data-index")
+        tabList[index].hasSelect = tabList[index].hasSelect ? false:true
+        renderTab(tabList)
+    })
+}
+function bindRecordScoreOper(){
+    $(".recordScoreOperaBtn").on("click",  function(e){
+        const index = $(this).parent().attr("data-index")
+        const behospitalCode = tabList[index].behospitalCode
+        loading()
+        recordScore(behospitalCode,1)
+    })
+}
+function bindOperaAll(){
+    $('.scoreOpera').on("click", function(e){
+        const hasSelectAll = $('.scoreOpera').attr("data-selectall")
+        if(hasSelectAll == 'true'){
+
+            for(let i = 0; i < tabList.length; i++){
+                tabList[i].hasSelect = false
+            }
+        }else{
+            for(let i = 0; i < tabList.length; i++){
+                tabList[i].hasSelect = true
+            }
+        }
+        renderTab(tabList)
+    })
+}
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+//获取科室列表
+getDeptList()
+function getDeptList(){
+    post(api.getDeptListUser,{inputStr:""}).then(res =>{
+        if(res.data.code == '0'){
+           const  deptList = res.data.data
+           rendeDeptList(deptList)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+    bindDeptSelect()
+}
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+  doctorNumTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 463 - 0
src/js/qcListPerson.js

@@ -0,0 +1,463 @@
+const $ = require('jquery');
+require("../css/qcListPerson.less");
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getUrlArgObject} = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("./../images/icon_check.png")
+const iconUnCheck = require("./../images/icon_unchecked.png")
+const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const loadingImg = require("./../images/loading.gif")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+let doctorName_global = getUrlArgObject("doctorName")
+
+console.log('doctorName_global',doctorName_global)
+$('.selectDoctor').html(doctorName_global)
+
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,nameTemp = "",
+  behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName=doctorName_global, doctorNameTemp=doctorName_global,data_desc=[],data_asc=[];
+
+$('.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()
+})
+function getTabData(activePage){
+    const param = {
+        current:activePage,
+        behospitalCode: behospitalCode,
+        name: name, //条目名
+        level:level,//病历等级
+        deptId: deptId,
+        asc:data_asc,     //升序
+        desc:data_desc,       //降序
+        doctorName: doctorName,
+        behosDateStart: behosDateStart, //1-单项否决 0-非
+        behosDateEnd: behosDateEnd, //0-未启用 1-启用
+        size: 15
+    }
+    post(api.qcListByPerson,param).then(res =>{
+        if(res.data.code == '0'){
+            tabList = res.data.data.records
+            const totalPage = res.data.data.pages
+            const totalNum = res.data.data.total
+            renderTab(tabList)
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    behosDateStart = $("#datepicker").val().trim()
+    behosDateEnd = $("#datepicker2").val().trim()
+    const start = new Date(behosDateStart).getTime()
+    const end = new Date(behosDateEnd).getTime()
+    if(start > end){
+        $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    }
+    if(behosDateStart){
+        behosDateStart = behosDateStart.replace(/\//g,'-') + ' 00:00:00'
+    }
+    if(behosDateEnd){
+        behosDateEnd = behosDateEnd.replace(/\//g,'-') + ' 23:59:59'
+    }
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    doctorName = doctorNameTemp
+    getTabData(1)
+})
+$("th[code]").on("click",function(e){
+  const code=$(this).attr("code");
+  if(data_asc[0]===code){
+    data_desc=[code];
+    data_asc=[];
+  }else{
+    data_desc=[];
+    data_asc=[code];
+  }
+  getTabData(1);
+  console.log(code)
+});
+function renderTab(data){
+    let str = ``
+    let hasSelectAll = true
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        if(!item.hasSelect){
+            hasSelectAll = false
+        }
+        str += `
+            <tr  data-index=${i}>
+                <td class="scoreOperaItem textCenter">${item.hasSelect ? `<img class="iconCheck" src=${iconCheck} />`:`<img class="iconCheck" src=${iconUnCheck} />`}</td>
+                <td  class="recordScoreOperaBtn textCenter">评分</td>
+                <td >${item.behospitalCode || "-"}</td>
+                <td>${item.fileCode || "-"}</td>
+                <td  class="textCenter"><span  data-index=${i} class="patientNameSpan">${item.name || "-"}<span></td>
+                <td  class="textCenter">${item.sex || "-"}</td>
+                <td  class="textCenter">${item.age || "-"}</td>
+                <td  class="textCenter">${item.bedCode || "-"}</td>
+                <td  class="textCenter">${item.behospitalDate&&item.behospitalDate.slice(0,10) || "-"}</td>
+                <td  class="textCenter">${item.leaveHospitalDate&&item.leaveHospitalDate.slice(0,10)|| "-"}</td>
+                <td  class="textCenter">${item.behDoctorName   || "-"}</td>
+                <td  class="textCenter">${item.doctorName || "-"}</td>
+                <td  class="textCenter">${item.directorDoctorName || "-"}</td>
+                <td  class="textCenter">${item.behDeptName || "-"}</td>
+                <td  class="textCenter">${item.level || "-"}</td>
+                <td  class="textCenter">${item.scoreRes || "-"}</td>
+                <td  class="textCenter">${item.gradeTime&&item.gradeTime.slice(0,10) || "-"}</td>
+            </tr>
+        `
+    }
+    if(data.length === 0){
+        hasSelectAll = false
+    }
+    if(hasSelectAll){
+        $('.scoreOpera img').attr("src" ,iconCheck)
+        $('.scoreOpera').attr("data-selectall",true)
+    }else{
+        $('.scoreOpera img').attr("src" ,iconUnCheck)
+        $('.scoreOpera').attr("data-selectall",false)
+    }
+    $('tbody').html(str)
+    bindScoreOperaItem()
+    bindRecordScoreOper()
+    bindScoreDetail()
+}
+
+function scoreDetail(id,age){
+    window.open(`./qcScore.html?id=${id}&age=${age}`)
+}
+function bindScoreDetail(){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const id = tabList[index].behospitalCode
+        const age = tabList[index].age
+        const noScore = tabList[index].level == '未评分'
+        if(noScore){
+            $.alerModal({"message":'请先进行评分!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            return
+        } else{
+            scoreDetail(id,age)
+        }
+       
+    })
+}
+
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+bindOperaAll()
+function bindScoreOperaItem(){
+    $(".scoreOperaItem").on("click",  function(e){
+        const index = $(this).parent().attr("data-index")
+        tabList[index].hasSelect = tabList[index].hasSelect ? false:true
+        renderTab(tabList)
+    })
+}
+function bindRecordScoreOper(){
+    $(".recordScoreOperaBtn").on("click",  function(e){
+        const index = $(this).parent().attr("data-index")
+        const behospitalCode = tabList[index].behospitalCode
+        loading()
+        recordScore(behospitalCode,1)
+    })
+}
+function bindOperaAll(){
+    $('.scoreOpera').on("click", function(e){
+        const hasSelectAll = $('.scoreOpera').attr("data-selectall")
+        if(hasSelectAll == 'true'){
+
+            for(let i = 0; i < tabList.length; i++){
+                tabList[i].hasSelect = false
+            }
+        }else{
+            for(let i = 0; i < tabList.length; i++){
+                tabList[i].hasSelect = true
+            }
+        }
+        renderTab(tabList)
+    })
+}
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+//获取科室列表
+getDeptList()
+function getDeptList(){
+    post(api.getDeptListUser,{inputStr:""}).then(res =>{
+        if(res.data.code == '0'){
+           const  deptList = res.data.data
+           rendeDeptList(deptList)
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+
+
+function rendeDeptList(deptList){
+    let str = `<li class="deptItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+    bindDeptSelect()
+}
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("click",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(function() {
+    $.datepicker.regional['zh-CN'] = {
+    clearText: '清除',
+    clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
+    closeText: '关闭',
+    closeStatus: '不改变当前选择',
+    prevText: '<上月',
+    prevStatus: '显示上月',
+    prevBigText: '<<',
+    prevBigStatus: '显示上一年',
+    nextText: '下月>',
+    nextStatus: '显示下月',
+    nextBigText: '>>',
+    nextBigStatus: '显示下一年',
+    currentText: '今天',
+    currentStatus: '显示本月',
+    monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+    monthStatus: '选择月份',
+    yearStatus: '选择年份',
+    weekHeader: '周',
+    weekStatus: '年内周次',
+    dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+    dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+    dayNamesMin: ['日','一','二','三','四','五','六'],
+    dayStatus: '设置 DD 为一周起始',
+    dateStatus: '选择 m月 d日, DD',
+    dateFormat: 'yy-mm-dd',
+    firstDay: 1,
+    initStatus: '请选择日期',
+    isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+
+    $( "#datepicker" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+    $( "#datepicker2" ).datepicker({
+        changeMonth: true,
+        changeYear: true,
+        dateFormat:"yy/mm/dd"
+    });
+});
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".levelList ").css("display", "none")
+    $(".deptList").css("display", "none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    
+})
+
+$((function($){
+})($));

+ 23 - 3
src/js/roleManager.js

@@ -118,6 +118,7 @@ $(function(){
                         }
                     }
                 }else if(permissionId){//第三层
+                    let tmpNum = 0
                     for(let i = 0;i < tmpDataLis.length;i++){
                         let num = 0
                         let tmpPer = tmpDataLis[i].sysPermissionDTOList
@@ -134,20 +135,38 @@ $(function(){
                         }else{
                             tmpDataLis[i].haveMenu = '1'
                         }
+                        //二层否有选中,有则第一层选中,否则第一层不选中
+                        if(tmpDataLis[i].haveMenu == 0){
+                            ++tmpNum
+                        }
+                    }
+                    if(tmpNum == tmpDataLis.length){//二层都是取消状态,一层选中取消掉否则选中
+                        tmpData.haveMenu = 0
+                    }else{
+                        tmpData.haveMenu = 1
                     }
                 }else{//第二层,内层全选反选
+                    let tmpNum = 0
                     for(let i = 0;i < tmpDataLis.length;i++){
                         let tmpPer = tmpDataLis[i].sysPermissionDTOList
                         if(menuId&&menuId == tmpDataLis[i].menuId){//第二层,里面的全部选中或者全部取消
                             tmpSelectData = tmpDataLis[i]
-                            // console.log(tmpDataLis[i],788787878)
                             tmpDataLis[i].haveMenu = haveMenu==0?'1':'0'
                             for(let m = 0;m < tmpPer.length;m++){//所有相同id联动
                                 tmpPer[m].havePermission = haveMenu==0?'1':'0'
                             }
                         }
+                        //二层否有选中,有则第一层选中,否则第一层不选中
+                        if(tmpDataLis[i].haveMenu == 0){
+                            ++tmpNum
+                        }
+                    }
+                    if(tmpNum == tmpDataLis.length){//二层都是取消状态,一层选中取消掉否则选中
+                        tmpData.haveMenu = 0
+                    }else{
+                        tmpData.haveMenu = 1
                     }
-                    //麻烦,全选后遍历统计数据中有相同id的也要选中,三级自动选中后二级要判断是取消还是选中
+                    //全选后遍历统计数据中有相同id的也要选中,三级自动选中后二级要判断是取消还是选中
                     for(let i = 0;i < tmpDataLis.length;i++){//二级循环
                         let num = 0
                         if(menuId&&menuId != tmpDataLis[i].menuId){//第二层,没有点击,自动选中第三层相同id的
@@ -277,7 +296,7 @@ $(function(){
         let str = ''
         for(let i = 0;i < data.length;i++){
             str+=`
-                <li class="ellipsis">${data[i].name} <span class="editRole" data-id="${data[i].id}">编辑</span></li>
+                <li class="ellipsis editRole" style="background:${i == 0?'#F0F5FF':'#fff'}" data-id="${data[i].id}">${data[i].name}</li>
             `
         }
         $(".leftMenu ul").html(str)
@@ -288,6 +307,7 @@ $(function(){
             let id = $(this).attr("data-id")
             curId = id
             permissionIdLis=[],menuIdLis=[];
+            $(this).css({"background-color":"#F0F5FF"}).siblings().css("background-color","#fff")
             getRoleMenu(id)
         })
     }

+ 6 - 2
src/js/userManager.js

@@ -174,6 +174,7 @@ function bindEdit(data,activePage){
 }
 //启用禁用
 function toggleOnOff(url,id,that,status){
+    $.alerModal({type:"loading"});
     post(url,{userId:id}).then(res =>{
         if(res.data.code == '0'){
             // const data = res.data.data
@@ -183,9 +184,12 @@ function toggleOnOff(url,id,that,status){
             })
             that.siblings().html(status==1?' 禁用':' 启用')
             $.alerModal({"message":"修改成功",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
-        }else{}
+        }else{
+            console.log(res)
+        }
+        $(".loading").remove()
     }).catch((e) =>{
-    
+        $(".loading").remove()
     })
 }
 let leftDeptLis = [],

+ 2 - 0
src/js/utils.js

@@ -8,6 +8,8 @@ const pageMap={
   'YH-JCSJWH-MKSJWH':'moduleManager.html',
   'YH-JCSJWH-TMSJWH':'itemManager.html',
   'YH-BLZK-ZKPF':'qcList.html',
+  'YH-BLZK-ZKPFKS':'qcListDept.html',
+  'YH-BLZK-ZKPFGR':'qcListPerson.html',
   'YH-TJFX':'statistics.html',
   'YH-QXGL-YHGL':'userManager.html',
   'YH-QXGL-JSGL':'roleManager.html',

+ 31 - 2
webpack.config.js

@@ -6,9 +6,10 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 const CopyWebpackPlugin = require('copy-webpack-plugin');
 const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
 const webpack = require('webpack');
-const proxyHost = "http://192.168.2.236:5858";
-// const proxyHost = "http://192.168.2.241:5858";
+// const proxyHost = "http://192.168.2.236:5858";
+const proxyHost = "http://192.168.2.241:5858";
 // const proxyHost = "http://192.168.3.117:5858";//铁钢
+// const proxyHost = "http://192.168.3.113:5858";//王峰
 module.exports = {
   entry: {
     index: path.resolve(__dirname, 'src/js', 'index.js'),
@@ -18,6 +19,8 @@ module.exports = {
     moduleManager: path.resolve(__dirname, 'src/js', 'moduleManager.js'),
     itemManager: path.resolve(__dirname, 'src/js', 'itemManager.js'),
     qcList: path.resolve(__dirname, 'src/js', 'qcList.js'),
+    qcListDept:path.resolve(__dirname, 'src/js', 'qcListDept.js'),
+    qcListPerson:path.resolve(__dirname, 'src/js', 'qcListPerson.js'),
     userManager: path.resolve(__dirname, 'src/js', 'userManager.js'),
     roleManager: path.resolve(__dirname, 'src/js', 'roleManager.js'),
     vendor: 'lodash'// 多个页面所需的公共库文件,防止重复打包带入
@@ -110,6 +113,32 @@ module.exports = {
         collapseWhitespace: true //删除空白符与换行符
       }
     }),
+    new HtmlWebpackPlugin({
+      title: 'qcListPerson.html',
+      template: path.resolve(__dirname, 'src/html', 'qcListPerson.html'),
+      filename: 'qcListPerson.html',
+      chunks: ['qcListPerson', 'vendor', 'common'],
+      hash: true, //防止缓存
+      inject: true,
+      minify: {
+        removeAttributeQuotes: true, //压缩 去掉引号
+        removeComments: true, //移除HTML中的注释
+        collapseWhitespace: true //删除空白符与换行符
+      }
+    }),
+    new HtmlWebpackPlugin({
+      title: 'qcListDept.html',
+      template: path.resolve(__dirname, 'src/html', 'qcListDept.html'),
+      filename: 'qcListDept.html',
+      chunks: ['qcListDept', 'vendor', 'common'],
+      hash: true, //防止缓存
+      inject: true,
+      minify: {
+        removeAttributeQuotes: true, //压缩 去掉引号
+        removeComments: true, //移除HTML中的注释
+        collapseWhitespace: true //删除空白符与换行符
+      }
+    }),
     new HtmlWebpackPlugin({
       title: 'qcScore.html',
       template: path.resolve(__dirname, 'src/html', 'qcScore.html'),