Browse Source

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

zhouna 3 years ago
parent
commit
57c2fc7424

+ 2 - 0
package.json

@@ -4,6 +4,8 @@
   "description": "",
   "main": "index.js",
   "dependencies": {
+    "@babel/plugin-transform-runtime": "^7.16.10",
+    "@babel/runtime-corejs3": "^7.16.8",
     "axios": "^0.19.2",
     "bluebird": "^3.5.5",
     "echarts": "^4.7.0",

+ 474 - 0
src/css/appealCheck.less

@@ -0,0 +1,474 @@
+@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
+}
+.main-body{
+    .main-body-com;
+    border: none;
+    border-left:10px @disColor solid;
+    margin: 54px 0 0;
+    min-width: 1090px;
+    min-height: calc(100% - 84px);
+    /*width: 100%;*/
+}
+.appealBtn{
+    color: #00A1FF;
+    padding: 0 5px;
+    cursor: pointer;
+}
+.review {
+    cursor: pointer;
+    & i {
+      width: 6px;
+      height: 6px;
+      background: #f48138;
+      display: inline-block;
+      border-radius: 50%;
+      margin-right: 5px;
+    }
+  }
+  .rejected {
+    cursor: pointer;
+    & i {
+      width: 6px;
+      height: 6px;
+      background: #E3505B;
+      display: inline-block;
+      border-radius: 50%;
+      margin-right: 5px;
+    }
+  }
+  .approved {
+    cursor: pointer;
+    & i {
+      width: 6px;
+      height: 6px;
+      background: #22AC76;
+      display: inline-block;
+      border-radius: 50%;
+      margin-right: 5px;
+    }
+  }
+.qctable{
+    .table;
+    min-width: 1090px;
+    th,td{
+        padding:5px 10px;
+    }
+    th{
+        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");
+            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;
+    /*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_up.png") 60px center no-repeat;
+    padding-right: 15px;
+    background-size: 10px 6px;
+    &.up{
+        background: url("../images/arrow_down.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;
+    margin-right: 29px!important;
+    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;
+    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: 120px;
+    max-height: 400px;
+}
+.modularList,.typeList,.qcCheckList{
+    width: 120px;
+    // height: 200px;
+    li:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+}
+
+.selectModular,.selectDept,.selectType,.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: 120px;
+}
+
+.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;
+}
+.iconSetting{
+    width: 18px;
+    position: relative;
+    top: 3px;
+    margin: 0 3px 0 0;
+}
+.iconCalen{
+    position: absolute;
+    width: 15px;
+    top: 8px;
+    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;
+}
+
+
+
+.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;
+}
+.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;
+}

+ 180 - 0
src/css/appealExamine.less

@@ -0,0 +1,180 @@
+@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;
+}
+.main-body {
+  .main-body-com;
+  border: none;
+  border-left: 10px @disColor solid;
+  margin: 54px 0 0;
+  min-width: 1090px;
+  min-height: calc(100% - 84px);
+  /*width: 100%;*/
+}
+.appeal-info,
+.appeal-content,
+.appeal-history {
+  margin-top: 20px;
+  .title {
+    font-size: 16px;
+    font-weight: bold;
+    position: relative;
+    padding-left: 15px;
+  }
+  .title::after {
+    content: "";
+    width: 4px;
+    height: 13px;
+    background: #267fd7;
+    position: absolute;
+    left: 0;
+    top: 3px;
+    border-radius: 2px;
+  }
+
+  .info {
+    margin: 10px 0;
+    display: flex;
+    justify-content: space-between;
+    flex-flow: wrap;
+    padding: 0 12px;
+    .info-title {
+      margin-right: 10px;
+    }
+  }
+  .content {
+    margin: 10px 0;
+    padding: 0 12px;
+    .con-title {
+      margin-top: 10px;
+    }
+    .goDetail {
+      padding: 5px 15px;
+      background: #00a1ff;
+      color: #fff;
+      text-align: center;
+      border-radius: 4px;
+    }
+  }
+  .history {
+    overflow: hidden;
+    .box {
+      margin: 0 12px;
+      margin-top: 15px;
+      & span {
+        padding-right: 15px;
+      }
+    }
+    .box:first-child{
+      border-top: none!important;
+    }
+  }
+}
+.goback {
+  display: inline-block;
+  width: 85px;
+  height: 32px;
+  background: #00a1ff;
+  border-radius: 4px;
+  color: #fff;
+  text-align: center;
+  line-height: 32px;
+  cursor: pointer;
+  margin-right: 15px;
+  float: right;
+  & span {
+    color: #fff;
+    pointer-events: none;
+  }
+}
+.bot {
+  text-align: center;
+  display: flex;
+  justify-content: center;
+  margin-top: 20px;
+  .btn-sure {
+    display: inline-block;
+    width: 90px;
+    height: 32px;
+    background: #00a1ff;
+    border-radius: 4px;
+    color: #fff;
+    text-align: center;
+    line-height: 32px;
+    cursor: pointer;
+    margin-right: 15px;
+    & span {
+      color: #fff;
+      pointer-events: none;
+    }
+  }
+  & ul {
+    position: absolute;
+    background: #fff;
+    display: none;
+  }
+  .btn-cancel {
+    width: 90px;
+    height: 30px;
+    background: #fff;
+    border-radius: 4px;
+    color: #777;
+    border: 1px solid #777;
+    text-align: center;
+    line-height: 30px;
+    cursor: pointer;
+  }
+}
+
+.appeal-box {
+  .item {
+    padding: 5px 0;
+    position: relative;
+    .radio {
+      margin: 0 5px;
+    }
+    .title {
+      width: 80px;
+      text-align: right;
+      display: inline-block;
+    }
+    .inp {
+      border: 1px solid #e2e5ef;
+      height: 24px;
+      padding: 0 5px;
+    }
+    .textarea,
+    .textarea2 {
+      width: 300px;
+      height: 100px;
+      overflow-y: auto;
+      border: 1px solid #e2e5ef;
+      resize:none;
+      vertical-align: top;
+    }
+  }
+}
+.required {
+  color: #e3505b;
+}
+.warning {
+  display: none;
+}
+.con-title{
+  word-wrap: break-word;
+}

+ 591 - 0
src/css/appealHistory.less

@@ -0,0 +1,591 @@
+@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;
+}
+.main-body {
+  .main-body-com;
+  border: none;
+  border-left: 10px @disColor solid;
+  margin: 54px 0 0;
+  min-width: 1090px;
+  min-height: calc(100% - 84px);
+  /*width: 100%;*/
+}
+.appealBtn {
+  color: #00a1ff;
+  padding: 0 5px;
+  cursor: pointer;
+}
+.review {
+  cursor: pointer;
+  & i {
+    width: 6px;
+    height: 6px;
+    background: #f48138;
+    display: inline-block;
+    border-radius: 50%;
+    margin-right: 5px;
+  }
+}
+.rejected {
+  cursor: pointer;
+  & i {
+    width: 6px;
+    height: 6px;
+    background: #e3505b;
+    display: inline-block;
+    border-radius: 50%;
+    margin-right: 5px;
+  }
+}
+.approved {
+  cursor: pointer;
+  & i {
+    width: 6px;
+    height: 6px;
+    background: #22ac76;
+    display: inline-block;
+    border-radius: 50%;
+    margin-right: 5px;
+  }
+}
+.qctable {
+  .table;
+  min-width: 1090px;
+  th,
+  td {
+    padding: 5px 10px;
+  }
+  th {
+    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");
+      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;
+  /*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_up.png") 60px center no-repeat;
+  padding-right: 15px;
+  background-size: 10px 6px;
+  &.up {
+    background: url("../images/arrow_down.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;
+  margin-right: 29px !important;
+  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;
+  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: 120px;
+  max-height: 400px;
+}
+.modularList,
+.typeList,
+.qcCheckList {
+  width: 120px;
+  // height: 200px;
+  li:hover {
+    background-color: #eef4ff;
+    cursor: pointer;
+  }
+}
+
+.selectModular,
+.selectDept,
+.selectType,
+.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;
+}
+
+.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;
+}
+.iconSetting {
+  width: 18px;
+  position: relative;
+  top: 3px;
+  margin: 0 3px 0 0;
+}
+.iconCalen {
+  position: absolute;
+  width: 15px;
+  top: 8px;
+  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;
+}
+
+.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;
+}
+.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;
+}
+
+.appeal-box {
+  .item {
+    max-width: 390px;
+    padding: 5px 0;
+    .msg {
+      width: 300px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      display: inline-block;
+      vertical-align: middle;
+    }
+    .radio {
+      margin: 0 5px;
+    }
+    .title {
+      display: inline-block;
+      margin-right: 40px;
+    }
+    .inp {
+      border: 1px solid #e2e5ef;
+      height: 24px;
+      padding: 0 5px;
+    }
+    .textarea,
+    .textarea2 {
+      width: 78%;
+      height: 80px;
+      border: 1px solid #e2e5ef;
+      overflow-y: auto;
+    }
+  }
+}
+.drop-box {
+  position: relative;
+  margin-bottom: 10px;
+  &:after {
+    content: "";
+    display: inline-block;
+    width: 13px;
+    height: 7px;
+    background: url("../images/arrow_down.png") no-repeat;
+    background-size: 13px 7px;
+    position: absolute;
+    right: 8px;
+    top: 9px;
+  }
+}
+ul {
+  display: none;
+  position: absolute;
+  right: 0;
+  width: 81.5%;
+  top: 26px;
+  background: #fff;
+  border: 1px @tableBorderColor solid;
+  max-height: 205px;
+  overflow: auto;
+  box-sizing: border-box;
+  z-index: 1;
+  li {
+    line-height: 25px;
+    padding: 0 5px;
+    cursor: pointer;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    &:hover {
+      background: @tableBorderColor;
+    }
+  }
+}
+.checker-drop-input {
+  height: 24px;
+  border: 1px #e2e5ef solid;
+  width: 83%;
+  vertical-align: middle;
+  text-align: left;
+  line-height: 24px;
+  text-indent: 5px;
+  display: inline-block;
+}
+.required {
+  color: #e3505b;
+}
+p {
+  .red {
+    display: inline-block;
+    width: auto;
+    text-indent: 5px;
+  }
+}
+.warning {
+  display: none;
+}
+.show {
+  ul {
+    display: block;
+  }
+  &:after {
+    background-image: url("../images/arrow_up.png");
+  }
+}

+ 435 - 0
src/css/appealInit.less

@@ -0,0 +1,435 @@
+@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
+}
+.main-body{
+    .main-body-com;
+    border: none;
+    border-left:10px @disColor solid;
+    margin: 54px 0 0;
+    min-width: 1090px;
+    min-height: calc(100% - 84px);
+    /*width: 100%;*/
+}
+.qctable{
+    .table;
+    min-width: 1090px;
+    th,td{
+        padding:5px 10px;
+    }
+    th{
+        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");
+            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;
+    /*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_up.png") 60px center no-repeat;
+    padding-right: 15px;
+    background-size: 10px 6px;
+    &.up{
+        background: url("../images/arrow_down.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;
+    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;
+}
+.iconSetting{
+    width: 18px;
+    position: relative;
+    top: 3px;
+    margin: 0 3px 0 0;
+}
+.iconCalen{
+    position: absolute;
+    width: 15px;
+    top: 8px;
+    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;
+}
+
+
+
+.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;
+}
+.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;
+}

File diff suppressed because it is too large
+ 1068 - 0
src/css/appealUserPage.less


+ 290 - 265
src/css/common.less

@@ -1,325 +1,350 @@
-@import './reset.less';
-.ellipsis{
-    overflow: hidden;
-    text-overflow:ellipsis;
-    white-space: nowrap;
+@import "./reset.less";
+.container{
+  overflow-y: hidden;
+}
+.ellipsis {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
 .partTitle p a {
-    color: #8592B9;
-    opacity: 1;
+  color: #8592b9;
+  opacity: 1;
 }
 input:disabled {
-    background-color: @disColor;
+  background-color: @disColor;
 }
 
-.main-body-com{
-    background: #fff;
-    margin: 0;
-    padding: 20px 25px;
-    border:10px @disColor solid;
-    box-sizing: border-box;
+.main-body-com {
+  background: #fff;
+  margin: 0;
+  padding: 20px 25px;
+  border: 10px @disColor solid;
+  box-sizing: border-box;
 }
 
-.exportData{
-    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;
-    margin-bottom: 20px;
-    float: left;
-    top: 0px;
+.exportData {
+  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;
+  margin-bottom: 20px;
+  float: left;
+  top: 0px;
 }
 .export {
-    margin-bottom: 20px !important;
-}
-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%;
-    }
+  margin-bottom: 20px !important;
+}
+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%;
+  }
 }
 
 .dataSelectLight {
-    .partDetailControl .filterItem input {
-        width: 120px;
-        height: 34px;
-        border-radius: 4px;
-        border: 1px solid #E2E5EF;
-        outline: none;
-        margin-right: 10px;
-        padding: 0 10px;
-        box-sizing: border-box;
-    }
-    .partDetailControl .filterItem span {
-        display: inline-block;
-        line-height: 34px;
-        position: relative;
-    }
-    .datapickerBox input {
-        margin-right: 0px !important;
-    }
-    .iconCalen{
-        position: absolute;
-        width: 15px;
-        top: 10px !important;
-        right: 10px;
-    }
-    .divide {
-        margin: 0 10px;
-    }
+  .partDetailControl .filterItem input {
+    width: 120px;
+    height: 34px;
+    border-radius: 4px;
+    border: 1px solid #e2e5ef;
+    outline: none;
+    margin-right: 10px;
+    padding: 0 10px;
+    box-sizing: border-box;
+  }
+  .partDetailControl .filterItem span {
+    display: inline-block;
+    line-height: 34px;
+    position: relative;
+  }
+  .datapickerBox input {
+    margin-right: 0px !important;
+  }
+  .iconCalen {
+    position: absolute;
+    width: 15px;
+    top: 10px !important;
+    right: 10px;
+  }
+  .divide {
+    margin: 0 10px;
+  }
 }
 .dataSelectDark {
-    // position: relative;
-    // display: inline-block;
-    margin: 4px 20px 10px 0;
-    top: 0px !important;
+  // position: relative;
+  // display: inline-block;
+  margin: 4px 20px 10px 0;
+  top: 0px !important;
+  height: 34px !important;
+  line-height: 34px !important;
+  float: right !important;
+  span {
+    position: relative;
+    display: inline-block;
     height: 34px !important;
     line-height: 34px !important;
-    float: right !important;
-    span {
-        position: relative;
-        display: inline-block;
-        height: 34px !important;
-        line-height: 34px !important;
-        float: left;
-    }
-    input {
-        width: 120px;
-        height: 32px;
-        border-radius: 4px;
-        border: 1px solid @themeBorderClr;
-        outline: none;
-        padding: 0 10px;
-        box-sizing: border-box;
-        background-color: @themeColor;
-        color: @secColor;
-    }
-    .iconCalen{
-        position: absolute;
-        width: 15px;
-        top: 8px;
-        right: 10px;
-    }
-    .divide {
-        margin: 0 10px;
-        color: #fff;
-    }
+    float: left;
+  }
+  input {
+    width: 120px;
+    height: 32px;
+    border-radius: 4px;
+    border: 1px solid @themeBorderClr;
+    outline: none;
+    padding: 0 10px;
+    box-sizing: border-box;
+    background-color: @themeColor;
+    color: @secColor;
+  }
+  .iconCalen {
+    position: absolute;
+    width: 15px;
+    top: 8px;
+    right: 10px;
+  }
+  .divide {
+    margin: 0 10px;
+    color: #fff;
+  }
 }
-.managerContainer .filter,.filterclear.abnormalClear {
-    margin-bottom: 20px;
+.managerContainer .filter,
+.filterclear.abnormalClear {
+  margin-bottom: 20px;
 }
 .ui-datepicker-calendar {
-    border: 0 none;
-    min-width: 0;
+  border: 0 none;
+  min-width: 0;
 }
 .ui-datepicker thead {
-    background-color: #fff;
-    color: #c3cbd6;
+  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-widget{
-    z-index: 9999 !important;
-}
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-    border: 0;
-    background-color: #fff;
-    &:hover {
-        background-color: #c4d8fe;
-    }
+  padding: 0;
+  height: auto;
+  color: #657180;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+  text-align: center;
+  height: 30px;
+  line-height: 30px;
+}
+.ui-widget {
+  z-index: 9999 !important;
+}
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+  border: 0;
+  background-color: #fff;
+  &:hover {
+    background-color: #c4d8fe;
+  }
 }
 
-.iconCalen{
-    position: absolute;
-    width: 15px;
-    top: 10px;
-    right: 10px;
-}
-.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;
+.iconCalen {
+  position: absolute;
+  width: 15px;
+  top: 10px;
+  right: 10px;
+}
+.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;
+  background-color: #fff;
+  border: 0 none;
 }
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
+  -webkit-appearance: none;
 }
 .datapickerBox input {
-    height: 34px !important;
-    line-height: 34px !important;
-    box-sizing: border-box;
+  height: 34px !important;
+  line-height: 34px !important;
+  box-sizing: border-box;
 }
 input[type="number"] {
-    -moz-appearance: textfield;
+  -moz-appearance: textfield;
 }
-input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
-    /* WebKit browsers */
-    color: #aaa;
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  /* WebKit browsers */
+  color: #aaa;
 }
-input:-moz-placeholder, textarea:-moz-placeholder {
-    /* Mozilla Firefox 4 to 18 */
-    color: #aaa;
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  /* Mozilla Firefox 4 to 18 */
+  color: #aaa;
 }
-input::-moz-placeholder, textarea::-moz-placeholder {
-    /* Mozilla Firefox 19+ */
-    color: #aaa;
+input::-moz-placeholder,
+textarea::-moz-placeholder {
+  /* Mozilla Firefox 19+ */
+  color: #aaa;
 }
-input:-ms-input-placeholder, textarea:-ms-input-placeholder {
-    /* Internet Explorer 10+ */
-    color: #aaa;
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+  /* Internet Explorer 10+ */
+  color: #aaa;
 }
 
 .modaltipSuc {
-    position: fixed;
-    top: 40%;
-    left: 50%;
-    padding: 15px 0;
-    width: 180px;
-    border-radius: 3px;
-    color: #fff;
-    background: rgba(0, 0, 0, .6);
-    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000,endColorstr=#88000000);
+  position: fixed;
+  top: 40%;
+  left: 50%;
+  padding: 15px 0;
+  width: 180px;
+  border-radius: 3px;
+  color: #fff;
+  background: rgba(0, 0, 0, 0.6);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000,endColorstr=#88000000);
+  text-align: center;
+  img {
+    display: block;
+    width: 40px;
     text-align: center;
-    img {
-      display: block;
-      width: 40px;
-      text-align: center;
-      position: relative;
-      left: 50%;
-      transform: translateX(-50%);
-      margin-bottom: 8px;
-    }
+    position: relative;
+    left: 50%;
+    transform: translateX(-50%);
+    margin-bottom: 8px;
   }
+}
 
-.filterItem{
-    margin-right: 30px !important;
-    input {
-        margin-right: 0 !important;
-    }
+.filterItem {
+  margin-right: 30px !important;
+  input {
+    margin-right: 0 !important;
+  }
 }
 
-.filterHide{
-    display: none!important;
+.filterHide {
+  display: none !important;
 }
 input.canEditDept {
-    width: 160px !important;
+  width: 160px !important;
 }
 
 /*******弹窗*******/
-.modal-container{
-    display: none;
+.modal-container {
+  display: none;
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  z-index: 99;
+  .cover {
     position: fixed;
     width: 100%;
     height: 100%;
-    top:0;
-    left: 0;
-    z-index: 99;
-    .cover{
-        position: fixed;
-        width: 100%;
-        height: 100%;
-        background: #000;
-        opacity: 0.16;
-
-    }
-    .modal-box{
-        position: fixed;
-        width: 50%;
-        left: 25%;
-        top:100px;
-        background: #fff;
-        border-radius: 4px;
-        min-width: 615px;
+    background: #000;
+    opacity: 0.16;
+  }
+  .modal-box {
+    position: fixed;
+    width: 50%;
+    left: 25%;
+    top: 100px;
+    background: #fff;
+    border-radius: 4px;
+    min-width: 615px;
+  }
+  .modal-title {
+    border-bottom: 1px #e2e5ef solid;
+    height: 40px;
+    line-height: 42px;
+    padding: 0 20px;
+    .close {
+      color: #8c8c8c;
+      font-size: 20px;
+      cursor: pointer;
     }
-    .modal-title{
-        border-bottom: 1px #E2E5EF solid;
-        height: 40px;
-        line-height: 42px;
-        padding: 0 20px;
-        .close{
-            color: #8C8C8C;
-            font-size: 20px;
-            cursor: pointer;
-        }
+  }
+  .modal-body {
+    padding: 32px 38px;
+  }
+  .footer {
+    text-align: center;
+    button {
+      width: 80px;
+      height: 32px;
+      background: #00a1ff;
+      border-radius: 4px;
+      color: #fff;
+      text-align: center;
+      line-height: 32px;
+      position: relative;
+      margin-bottom: 32px;
+      cursor: pointer;
     }
-    .modal-body{
-        padding:32px 38px;
-
+    .confirm {
     }
-    .footer{
-        text-align: center;
-        button{
-            width: 80px;
-            height: 32px;
-            background: #00A1FF;
-            border-radius: 4px;
-            color: #fff;
-            text-align: center;
-            line-height: 32px;
-            position: relative;
-            margin-bottom: 32px;
-            cursor: pointer;
-        }
-        .confirm{
-
-        }
-        .cancel{
-            margin-left: 20px;
-            color: #00A1FF;
-            border:1px #00A1FF solid;
-            background: #fff;
-        }
+    .cancel {
+      margin-left: 20px;
+      color: #00a1ff;
+      border: 1px #00a1ff solid;
+      background: #fff;
     }
-
-}
+  }
+}
+.reds {
+  background: #E34D59;
+  padding: 0 5px;
+  border-radius: 22px;
+  color: #fff;
+}
+.dian {
+  width: 6px;
+  height: 6px;
+  background: #e34d59;
+  display: inline-block;
+  border-radius: 50%;
+  margin-bottom: 5px;
+}

+ 7 - 0
src/css/index.less

@@ -248,6 +248,12 @@
         background: url("../images/data-edit_a.png") @activeBg 16px 11px no-repeat;
       }
     }
+    .YH-SSXX{
+      background: url("../images/appeal.png") 16px 11px no-repeat;
+      &.active{
+        background: url("../images/appeal_a.png") @activeBg 16px 11px no-repeat;
+      }
+    }
     .slide-btn{
       display: inline-block;
     }
@@ -371,6 +377,7 @@
         border-radius:4px;
         box-shadow:1px 2px 20px -3px #000512;
         margin-left: 3px;
+        top: 0;
         &:before{
           content: "";
           display: inline-block;

File diff suppressed because it is too large
+ 352 - 269
src/css/qcScore.less


+ 1 - 0
src/css/roleManager.less

@@ -6,6 +6,7 @@
     width: 350px;
     height: 700px;
     background-color: #fff;
+    overflow-y: auto;
 }
 .managerContainer {
     overflow-y: hidden;

+ 104 - 0
src/html/appealCheck.html

@@ -0,0 +1,104 @@
+<!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 appealHistory">
+        <h2>申诉信息 > 申诉审核</h2>
+        <div class="main-body">
+            <div class="filterBox">
+                <div class="clearfix">
+                    <span class="filterItem typeFilter clearfix">
+                        <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="filterItem typeFilter">
+                        <span>所属科室:</span>
+                        <span class="selectDept">
+                            全部
+                        </span>
+
+                        <ul class="deptList filterDropList"></ul>
+                    </span>
+
+                    <span class="filterItem">
+                        <span>申诉模块:</span>
+                        <span class="selectModular ellipsis">全部</span>
+                        <ul class="modularList filterDropList">
+                            <!-- <Li class="modularItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="modularItem" data-name="病案首页" data-id="病案首页">病案首页</Li>
+                            <Li class="modularItem" data-name="入院记录" data-id="入院记录">入院记录</Li>
+                            <li class="modularItem" data-name="出院记录" data-id=出院记录>出院记录</li> -->
+                        </ul>
+                    </span>
+                    <span class="filterItem typeFilter">
+                        <span>申诉人:</span>
+                        <input class="name" type="text" placeholder="请输入申诉人" maxlength="10">
+                    </span>
+                    <span class="filterItem">
+                        <span>操作类型:</span>
+                        <span class="selectType">全部</span>
+                        <ul class="typeList filterDropList">
+                            <!-- <Li class="typeItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="typeItem" data-name="删除条目" data-id="0">删除条目</Li>
+                            <Li class="typeItem" data-name="新增已有条目" data-id="1">新增已有条目</Li>
+                            <li class="typeItem" data-name="新增缺失条目" data-id=2>新增缺失条目</li>
+                            <li class="typeItem" data-name="恢复条目" data-id=3>恢复条目</li> -->
+                        </ul>
+                    </span>
+                    <span class="filterItem">
+                        <span>状态:</span>
+                        <span class="qcSelectCheck">全部</span>
+                        <ul class="qcCheckList filterDropList">
+                            <!-- <Li class="qcCheckItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="qcCheckItem" data-name="待审核" data-id="0">待审核</Li>
+                            <Li class="qcCheckItem" data-name="审核通过" data-id="2">审核通过</Li>
+                            <li class="qcCheckItem" data-name="已驳回" data-id="1">已驳回</li> -->
+                        </ul>
+                    </span>
+                    <span class="filter">查询</span>
+                    <span class="filterclear abnormalClear filterclearT">重置</span>
+                    <span class="export">导出</span>
+                </div>
+            </div>
+            <div class="overAuto">
+                <table class="qctable">
+                    <thead>
+                        <tr class="tabTitle">
+                            <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="diagnose textCenter" >操作类型</th>
+                            <th class="doctorName textCenter" >状态</th>
+                            <th class="doctorName textCenter" >操作</th>
+                        </tr>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+            <div class="pagination"></div>
+        </div>
+
+    </div>
+</body>
+
+</html>

+ 117 - 0
src/html/appealExamine.html

@@ -0,0 +1,117 @@
+<!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>
+    <script type="text/html" id="appealDel">
+        <div class="appeal-box appealDel">
+            <div class="item">
+                <span class="title">处理方式: </span>
+                <input type="radio" name="status" value="2" class="radio" checked/>删除 
+                <input type="radio" name="status" value="1" class="radio" />修改
+            </div>
+            <p class="item"><span class="title">质控条目:</span><input class="inp" disabled value="${casesEntryName}" /></p>
+            <p class="item"><span class="title"><i class="required">*</i>提示信息:</span><input class="inp case endis msg" disabled maxlength="100" value="${msg}" /></p>
+            <p class="item"><span class="title"><i class="required">*</i>分值:</span><input class="inp endis score" disabled value="${value}" maxlength="100" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,1})?).*$/g, '$1')"/></p>
+            <p class="item"><span class="title">备注:</span><input class="inp endis explainInfo" disabled value="${explainInfo}" maxlength="255"/></p>
+            <p class="warning"><span></span><span class="red">处理结果不能为空~</span></p>
+        </div>
+    </script>
+
+    <script type="text/html" id="appealAdd">
+        <div class="appeal-box appealAdd">
+            <p class="item"><span class="title">处理方式:</span>新增</p>
+            <p class="item"><span class="title">质控条目:</span><input class="inp" disabled value="${casesEntryName}" /></p>
+            <p class="item"><span class="title"><i class="required">*</i>提示信息:</span><input class="inp msg" value="${msg}" maxlength="100"/></p>
+            <p class="item"><span class="title"><i class="required">*</i>分值:</span><input class="inp score"  value="${value}" maxlength="100" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,1})?).*$/g, '$1')"/></p>
+            <p class="item"><span class="title">备注:</span><input class="inp explainInfo"  value="${explainInfo}" maxlength="255"/></p>
+            <p class="warning"><span></span><span class="red">处理结果不能为空~</span></p>
+        </div>
+    </script>
+
+    <script type="text/html" id="appealRec">
+        <div class="appeal-box">
+            <p class="item"><span class="title">处理方式:</span>恢复</p>
+            <p class="item"><span class="title">质控条目:</span><input class="inp" disabled value="${casesEntryName}" /></p>
+            <p class="item"><span class="title"><i class="required">*</i>提示信息:</span><input class="inp msg" disabled value="${msg}" maxlength="100"/></p>
+            <p class="item"><span class="title"><i class="required">*</i>分值:</span><input class="inp score" disabled value="${value}" /></p>
+            <p class="item"><span class="title">备注:</span><input class="inp explainInfo" disabled value="${explainInfo}" maxlength="255" /></p>
+        </div>
+    </script>
+
+    <script type="text/html" id="appealDef">
+        <div class="appeal-box appealDef">
+            <p class="item"><span class="title text"><i class="required">*</i>处理结果:</span><textarea class="textarea" rows="3" cols="20"></textarea></p>
+            <p class="warning"><span></span><span class="red">处理结果不能为空~</span></p>
+        </div>
+    </script>
+
+    <script type="text/html" id="appealReject">
+        <div class="appeal-box appealReject">
+            <p class="item"><span class="title text"><i class="required">*</i>驳回理由:</span><textarea class="textarea2" ></textarea></p>
+            <p class="warning"><span></span><span class="red">驳回理由不能为空~</span></p>
+        </div>
+    </script>
+</head>
+
+<body>
+    <div class="container appealExamine">
+        <h2>申诉信息 > 申诉审核 > 审核</h2>
+        <div class="main-body">
+            <span class="goback">返回</span>
+            <div class="appeal-info">
+                <p class="title">患者基本信息</p>
+                <div class="info">
+
+                </div>
+            </div>
+            <div class="appeal-content">
+                <p class="title">申诉内容</p>
+                <div class="content">
+
+                </div>
+            </div>
+            <div class="appeal-history">
+                <p class="title">申诉记录</p>
+                <div class="history">
+
+                </div>
+            </div>
+            <div class="bot">
+                <div class="btn-sure">
+                    <span class="sure">审核通过</span>
+
+                </div>
+                <ul>
+                    <li class="appealDel">审核删改</li>
+                    <li class="appealAdd">审核已有新增</li>
+                    <li class="appealDef">审核缺失新增</li>
+                </ul>
+                <p class="btn-cancel">驳回</p>
+            </div>
+        </div>
+
+    </div>
+    <div id="mainBox"></div>
+    <div class="modal" id="delModal">
+        <div class="cover"></div>
+        <div class="modal-box">
+            <div class="modal-header clearfix">
+                <span class="title">审核通过</span>
+                <a class="close" href="javascript:void(0);">×</a>
+            </div>
+            <div class="modal-body">
+                <!--<p>确定要删除该评分记录吗?</p>-->
+            </div>
+            <div class="modal-footer">
+                <a class="close cancel" href="javascript:void(0);">取消</a>
+                <a class="confirm" href="javascript:void(0);">保存</a>
+            </div>
+        </div>
+    </div>
+</body>
+
+</html>

+ 150 - 0
src/html/appealHistory.html

@@ -0,0 +1,150 @@
+<!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>
+    <script type="text/html" id="appealDef">
+        <div class="appeal-box" style="width: 370px;">
+            <p class="item">
+                <span class="title">来源:${modeName}</span>
+                {{if appealOperationType!=='2'}}
+                <span class="title">扣分:${qcresultDetaiValue}</span>
+                {{/if}}
+                <span style="width:70px;text-align:right;">操作类型:</span><span>${appealOperationType == 0 ? '删改条目' : appealOperationType == 1 ? '新增已有条目' : appealOperationType == 2 ? '新增缺失条目' : '恢复条目'}</span>
+            </p>
+            {{if appealOperationType!=='2'}}
+            <p class="item"><span style="width:70px;text-align:right;">缺陷详情:</span><span title=${qcresultDetailMsg} class="msg">${qcresultDetailMsg}</span></p>
+            {{/if}}
+            <div class="drop-box checker-drop-box" style="display:flex">
+            <span style="width:70px;text-align:right;display:inline-block"><i class="required">*</i>审核人:</span>
+                <p class="checker-drop-input" code=${checkId}>${checkName}</p>
+                <ul></ul>
+            </div>
+            <p class="item" style="display:flex"><span ><i class="required">*</i>申诉说明:</span><textarea class="textarea" ></textarea></p>
+            <p class="warning"><span></span><span class="red">申诉说明不能为空~</span></p>
+        </div>
+    </script>
+    <script type="text/html" id="flawDropTmpl">
+        {{each(i,it) info}}
+        <li class="infoItem" idx="${i}" name="${it.userName}" code="${it.id}" title="${it.userName}">${it.userName}</li>
+        {{/each}}
+    </script>
+</head>
+
+<body>
+    <div class="container appealHistory">
+        <h2>申诉信息 > 申诉记录</h2>
+        <div class="main-body">
+            <div class="filterBox">
+                <div class="clearfix">
+                    <span class="filterItem typeFilter clearfix">
+                        <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="filterItem typeFilter">
+                        <span>所属科室:</span>
+                        <span class="selectDept">
+                            全部
+                        </span>
+
+                        <ul class="deptList filterDropList"></ul>
+                    </span>
+
+                    <span class="filterItem">
+                        <span>申诉模块:</span>
+                        <span class="selectModular ellipsis">全部</span>
+                        <ul class="modularList filterDropList">
+                            <!-- <Li class="modularItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="modularItem" data-name="病案首页" data-id="病案首页">病案首页</Li>
+                            <Li class="modularItem" data-name="入院记录" data-id="入院记录">入院记录</Li>
+                            <li class="modularItem" data-name="出院记录" data-id=出院记录>出院记录</li> -->
+                        </ul>
+                    </span>
+                    <span class="filterItem typeFilter">
+                        <span>审核人:</span>
+                        <input class="name" type="text" placeholder="请输入审核人">
+                    </span>
+                    <span class="filterItem typeFilter">
+                        <span>患者姓名:</span>
+                        <input class="patientNameInp" type="text" placeholder="请输入患者姓名">
+                    </span>
+                    <span class="filterItem">
+                        <span>操作类型:</span>
+                        <span class="selectType">全部</span>
+                        <ul class="typeList filterDropList">
+                            <!-- <Li class="typeItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="typeItem" data-name="删除条目" data-id="0">删除条目</Li>
+                            <Li class="typeItem" data-name="新增已有条目" data-id="1">新增已有条目</Li>
+                            <li class="typeItem" data-name="新增缺失条目" data-id=2>新增缺失条目</li>
+                            <li class="typeItem" data-name="恢复条目" data-id=3>恢复条目</li> -->
+                        </ul>
+                    </span>
+                    <span class="filterItem">
+                        <span>状态:</span>
+                        <span class="qcSelectCheck">全部</span>
+                        <ul class="qcCheckList filterDropList">
+                            <!-- <Li class="qcCheckItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="qcCheckItem" data-name="待审核" data-id="0">待审核</Li>
+                            <Li class="qcCheckItem" data-name="审核通过" data-id="2">审核通过</Li>
+                            <li class="qcCheckItem" data-name="已驳回" data-id="1">已驳回</li> -->
+                        </ul>
+                    </span>
+                    <span class="filter">查询</span>
+                    <span class="filterclear abnormalClear filterclearT">重置</span>
+                    <span class="export">导出</span>
+                </div>
+            </div>
+            <div class="overAuto">
+                <table class="qctable">
+                    <thead>
+                        <tr class="tabTitle">
+                            <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="diagnose textCenter" >操作类型</th>
+                            <th class="doctorName textCenter" >状态</th>
+                            <th class="doctorName textCenter" >操作</th>
+                        </tr>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+    <div id="mainBox"></div>
+        <div class="modal" id="delModal">
+            <div class="cover"></div>
+            <div class="modal-box">
+                <div class="modal-header clearfix">
+                    <span class="title">申诉</span>
+                    <a class="close" href="javascript:void(0);">×</a>
+                </div>
+                <div class="modal-body">
+                    <!--<p>确定要删除该评分记录吗?</p>-->
+                </div>
+                <div class="modal-footer">
+                    <a class="close cancel" href="javascript:void(0);">取消</a>
+                    <a class="confirm" href="javascript:void(0);">提交</a>
+                </div>
+            </div>
+        </div>
+</body>
+
+</html>

+ 146 - 0
src/html/appealInit.html

@@ -0,0 +1,146 @@
+<!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 qcListDept">
+        <h2>申诉信息 > 申诉发起</h2>
+        <div class="main-body">
+            <div class="filterBox">
+                <div class="clearfix">
+                    <span class="filterItem typeFilter">
+                        <span>科室:</span>
+                        <span class="selectDept">
+                            全部
+                        </span>
+
+                        <ul class="deptList filterDropList"></ul>
+                    </span>
+                    <span class="filterItem typeFilter clearfix">
+                        <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="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 up" id="filterToggler">展开筛选</a>
+                <div class="toggle-item clearfix">
+                    <span class="filterItem typeFilter">
+                        <span>病人姓名:</span>
+                        <input class="patientNameInp" type="text" placeholder="请输入病人姓名">
+                    </span>
+                    <span class="filterItem typeFilter">
+                        <span>病人住院序号:</span>
+                        <input class="patientNumInp" style="width: 148px;" type="text" placeholder="请输入病人住院序号">
+                    </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 filterHide fpFilterItem">
+                        <span>病案首页核查状态:</span>
+                        <span class="fpSelectCheck">全部</span>
+                        <ul class="checkList filterDropList fpCheckList">
+                            <Li class="fpCheckItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="fpCheckItem" data-name="未核查" data-id="0">未核查</Li>
+                            <Li class="fpCheckItem" data-name="已核查" data-id="1">已核查</Li>
+                        </ul>
+                    </span>
+                    <span class="filterItem filterHide doctorFilter fpFilterItem">
+                        <span>病案首页核查人:</span>
+                        <input class="fpCheckPeople" type="text" placeholder="请输入核查人">
+                    </span>
+                    <span class="filterItem filterHide typeFilter clearfix" >
+                        <span class="fl">病案首页核查时间:</span>
+                        <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepickerFp1" autocomplete="off" readonly /></span>
+                        <span  class="divide fl">-</span>
+                        <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepickerFp2"  autocomplete="off" readonly/></span>
+                    </span>
+                    <span class="filterItem qcFiliterItem">
+                        <span>病历核查状态:</span>
+                        <span class="qcSelectCheck">全部</span>
+                        <ul class="checkList filterDropList qcCheckList">
+                            <Li class="qcCheckItem" data-name="全部" data-id="">全部</Li>
+                            <Li class="qcCheckItem" data-name="未核查" data-id="0">未核查</Li>
+                            <Li class="qcCheckItem" data-name="已核查" data-id="1">已核查</Li>
+                        </ul>
+                    </span>
+                    <span class="filterItem doctorFilter qcFiliterItem">
+                        <span>病历核查人:</span>
+                        <input class="qcCheckPeople" type="text" placeholder="请输入核查人">
+                    </span>
+                    
+                    <span class="filterItem typeFilter clearfix qcFiliterItem" >
+                        <span class="fl">病历核查时间:</span>
+                        <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepickerQc1" autocomplete="off" readonly /></span>
+                        <span  class="divide fl">-</span>
+                        <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepickerQc2"  autocomplete="off" readonly/></span>
+                    </span>
+                    <span class="filterItem doctorFilter qcFiliterItem">
+                        <span>主诊断:</span>
+                        <input class="qcCheckMain" type="text" placeholder="请输入主诊断">
+                    </span>
+                </div>
+            </div>
+            <div class="overAuto">
+                <table class="qctable">
+                    <thead>
+                        <tr class="tabOpera"></tr>
+                        <tr class="tabTitle">
+                            <!-- <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 desc" code="leave_hospital_date">出院日期</th>
+                            <th class="diagnose textCenter" code="diagnose">主诊断</th>
+                            <th class="doctorName textCenter" code="beh_doctor_name">住院医生</th>
+                            <th class="doctorName textCenter" code="doctor_name">主管医生</th>
+                            <th class="doctorName textCenter" code="director_doctor_name">主任医生</th>
+                            <th class="deptName textCenter" code="beh_dept_name">科室</th>
+                            <th class="recordLevel textCenter" code="level">病历等级</th>
+                            <th class="recordScore textCenter" code="score_res">病历得分</th>
+                            <th class="scoreTime textCenter" code="grade_time">评分时间</th> -->
+                        </tr>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 402 - 0
src/html/appealUserPage.html

@@ -0,0 +1,402 @@
+<!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">
+    <!--<link rel="shortcut icon" href="../resource/favicon.ico" type="image/x-icon">-->
+    <title>质控评分</title>
+    <script type="text/html" id="subMenuTmpl">
+        {{if sonMode.length}}
+        <li class="list-1 menu-${id}">
+            <p>${name}</p>
+            {{else}}
+        <li class="page menu-${id}" code="${name}" mode="${id}">${name}
+            {{/if}}
+            <ul>
+                {{each sonMode}}
+                <li class="page" code="${name.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'')}" mode="${id}">${name}</li>
+                {{/each}}
+            </ul>
+        </li>
+    </script>
+    <script type="text/html" id="miniMenuTmpl">
+        {{if sonMode.length}}
+        <li class="list-1  menu-${id}">
+            <div class="arrow-left"></div>
+            {{else}}
+        <li class="page  menu-${id}" code="${name}">
+            {{/if}}
+            {{if sonMode.length}}
+            <ul> 
+                <div class="liExtend"></div>
+                {{each sonMode}}
+                    <li class="page" code="${name.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'')}">${name}</li>
+                {{/each}}
+            </ul>
+            {{/if}}
+        </li>
+    </script>
+    <script type="text/html" id="infoTmpl">
+        <span>病案号:${fileCode}</span>
+        <span>姓名:${name}</span>
+        <span>性别:${sex}</span>
+        <span>年龄:${age}</span>
+        <span>科室:${behDeptName}</span>
+        <span class="level">病历等级:${level}</span>
+        <span class="score">病历得分:${scoreRes}</span>
+    </script>
+    <script type="text/html" id="tableTmpl">
+         {{if k==="出院诊断"}}
+         <table class="embed-table">
+             <tr>
+                 <td>
+                     <table>
+                         <tr>
+                             <th>出院诊断</th>
+                             <th>疾病编码</th>
+                             <th>入院病情</th>
+                             <th>出院病情</th>
+                         </tr>
+                         {{each(i,v) data}}
+                         {{if i<(data.length/2)}}
+                         <tr>
+                             <td>${诊断名称}</td>
+                             <td>${诊断编码}</td>
+                             <td>${入院情况}</td>
+                             <td>${出院情况}</td>
+                         </tr>
+                         {{/if}}
+                         {{/each}}
+                     </table>
+                 </td>
+                 <td>
+                     <table>
+                         <tr>
+                             <th>出院诊断</th>
+                             <th>疾病编码</th>
+                             <th>入院病情</th>
+                             <th>出院病情</th>
+                         </tr>
+                         {{each(i,v) data}}
+                         {{if i>=(data.length/2)}}
+                         <tr>
+                             <td>${诊断名称}</td>
+                             <td>${诊断编码}</td>
+                             <td>${入院情况}</td>
+                             <td>${出院情况}</td>
+                         </tr>
+                         {{/if}}
+                         {{/each}}
+                         {{if (data.length)%2===1}}
+                         <tr>
+                             <td></td>
+                             <td></td>
+                             <td></td>
+                             <td></td>
+                         </tr>
+                         {{/if}}
+                     </table>
+                 </td>
+             </tr>
+<!--
+             <tr><td colspan="2" class="table-tip">入院病情:1、"有" 2、"临床未确定" 3、"情况不明" 4、"无"<br/>出院病情:1、"治愈"  2、"好转"  3、"未愈"  4、"死亡"  9、"其它"</td></tr>
+-->
+         </table>
+         {{else}}
+             <table>
+         <tr>
+             <th rowspan="2">手术及操作编码</th>
+             <th rowspan="2">手术及操作日期</th>
+             <th rowspan="2">手术级别</th>
+             <th rowspan="2">手术及操作名称</th>
+             <th colspan="3">手术及操作医生</th>
+             <th rowspan="2">切口等级</th>
+             <th rowspan="2">愈合等级</th>
+             <th rowspan="2">麻醉方式</th>
+             <th rowspan="2">麻醉医师</th>
+         </tr>
+         <tr><th>术者</th><th>I助</th><th>II助</th></tr>
+         {{each data}}
+         <tr>
+             <td>${手术编码}</td>
+             <td>${手术日期}</td>
+             <td>${手术级别}</td>
+             <td>${手术名称}</td>
+             <td>${手术医生ID}</td>
+             <td>${一助医生ID}</td>
+             <td>${二助医生ID}</td>
+             <td>${切口等级}</td>
+             <td>${愈合等级}</td>
+             <td>${麻醉方式}</td>
+             <td>${麻醉医师}</td>
+         </tr>
+         {{/each}}
+         </table>
+         {{/if}}
+    </script>
+    <script type="text/html" id="flawTmpl">
+        <div {{if isReject==='1'}} class="flaw-item high-light" {{else}} class="flaw-item" {{/if}} code="${modelName.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'')}">
+            <div  {{if isDeleted==="Y"}} class="delete title"{{else}}  class="title" {{/if}}>
+                {{if (exampleStatus==="0"||exampleStatus==="1"||exampleStatus==="2")}}
+                <span data_id="${appealInfoId}" data_type="${exampleStatus}"  data_casesEntryId="${casesEntryId}" data_qcresultDetailId="${id}"  class="btn ${exampleStatus==='0'?'appeal':exampleStatus==='2'?'examine':exampleStatus==='1'?'reject':''}" msg="${msg}">${exampleStatus==='0'?'申诉':exampleStatus==='2'?'审核':exampleStatus==='1'?'驳回':''}</span>
+                {{/if}}
+                {{if gradeType===2}}
+                <img {{if explainInfo}} title="${explainInfo}" {{/if}} src="../images/tag.png" alt=""/>
+                {{/if}}
+                {{if info}}
+                <a {{if pageKeyList[0]}} anchors="${pageKeyList}" code="${id}" href="#anchor${pageKeyList[0]}" {{/if}}>${msg}(${info})</a>
+                {{else}}
+                <a {{if pageKeyList[0]}} anchors="${pageKeyList}" code="${id}" href="#anchor${pageKeyList[0]}" {{/if}}>${msg}</a>
+                {{/if}}
+            </div>
+            <div class="opers clearfix">
+                {{if score===0}}
+                <p {{if isDeleted==="Y"}} class="fl delete" {{else}} class="fl" {{/if}}>评分:<span class="red">warn</span></p>
+                {{else}}
+                <p {{if isDeleted==="Y"}} class="fl delete"{{else}} class="fl" {{/if}}>评分:<span class="red">-${score}</span></p>
+                {{/if}}
+                {{if exampleStatus!=="0"}}
+                <div class="oper fr">
+                    <a class="edit-flaw blue" code="${id}" href="javascript:void(0);" style="margin-right: 18px;">申诉</a>
+                </div>
+                {{/if}}
+            </div>
+        {{if gradeType===2||isDeleted==="Y"}}
+            <div class="info clearfix">
+                <p class="fl name" title="${linkman}">${linkman}</p>
+                <p class="fr">${gmtModified}</p>
+            </div>
+        {{/if}}
+        </div>
+    </script>
+    <script type="text/html" id="emptyTmpl">
+        <div class="empty">
+            <img src="../images/empty.png" alt="空"/>
+            <p>暂无缺陷~</p>
+        </div>
+    </script>
+    <script type="text/html" id="editTmpl">
+        <div class="edit-box">
+            {{if score===0}}
+            <p><span>评分: </span> 0</p>
+            {{else}}
+            <p><span>评分: </span> -${score}</p>
+            {{/if}}
+            <p><span>操作类型: </span>${appealOperationType == 3 ? '恢复条目' : appealOperationType == 1 ? '新增已有条目' : appealOperationType == 2 ? '新增缺失条目' : '删改条目'}</p>
+            <p><span>缺陷详情: </span>${msg}</p>
+            <div class="drop-box checker-drop-box">
+            <span><i class="required">*</i>审核人: </span>
+                <span type="text" class="checker-drop-input ellipsis"></span>
+                <ul></ul>
+            </div>
+            <p><span><i class="required">*</i>申诉说明: </span><textarea  id="qcInfo" class="textarea-text" cols="38" rows="6"></textarea></p>
+            <p class="warning"><span></span><span class="red">申诉说明不能为空~</span></p>
+        </div>
+    </script>
+    <script type="text/html" id="flawDropTmpl">
+        {{each(i,it) info}}
+        <li class="infoItem" idx="${i}" name="${it.entryName||it.userName}" code="${it.id}" title="${it.entryName||it.userName}">${it.entryName||it.userName}</li>
+        {{/each}}
+    </script>
+    <script type="text/html" id="addFlawTmpl">
+        <div class="edit-box add-box">
+            <p><span><i class="required">*</i>操作类型: </span>
+                <input type="radio" name="operType" value="1" checked><span class="radio-label">新增已有条目</span>
+                <input type="radio" name="operType" value="2"><span class="radio-label">新增缺失条目</span></p>
+            <div class="drop-box checker-drop-box">
+                <span><i class="required">*</i>审核人: </span>
+                <span type="text" class="checker-drop-input ellipsis"></span>
+                <ul></ul>
+            </div>
+            <div class="drop-box flaw-drop-box exist-item">
+                <span><i class="required">*</i>质控条目: </span>
+                <input type="text" class="flaw-drop-input ellipsis"/>
+                <ul></ul>
+            </div>
+            <p class="exist-item"><span style="margin-right: 16px;"><i class="required">*</i>提示信息:</span><input title="${msg}" class="ellipsis" disabled id="addQcMsg" type="text" value="${msg}" /></p>
+            <p class="exist-item"><span><i class="required">*</i>分值:</span> <input id="addQcScore" type="text" value="${score}" disabled onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,1})?).*$/g, '$1')"/></p>
+            <p class="exist-item"><span style="margin-right: 16px;">备注:</span><input title="${explainInfo}" class="ellipsis" disabled id="addQcInfo" type="text" value="${explainInfo}" autocomplete="off"/></p>
+            <p><span><i class="required">*</i>申诉说明: </span><textarea  id="addQcEx" class="textarea-text" cols="40" rows="6"></textarea></p>
+            <p class="warning"><span></span><span class="red">支持≥0的数字输入,最多保留小数点后1位~</span></p>
+        </div>
+    </script>
+    <script type="text/html" id="appealStatusTmpl">
+        <div class="edit-box show-box ${exampleStatus==='1'?'refuse':exampleStatus==='2'?'pass':''}">
+            <p><span>申诉时间: </span> ${appealCreateDate}</p>
+            <p><span>申诉人: </span> ${claimantName}</p>
+            <p><span>审核人: </span> ${checkName}</p>
+            <p><span>操作类型: </span> ${appealOperationType == 0 ? '删改条目' : appealOperationType == 1 ? '新增已有条目' : appealOperationType == 2 ? '新增缺失条目' : '恢复条目'}</p>
+            {{if appealOperationType==='1'}}
+            <p><span>质控条目:</span>${casesEntryName}</p>
+            <p><span>提示信息:</span>${casesEntryMsg}</p>
+            <p><span>分值:</span>${value}</p>
+            <p><span>备注:</span>${appealRemark}</p>
+		  	{{/if}}
+            <p><span>申诉说明: </span> ${appealExplain}</p>
+            {{if exampleStatus==='1'||exampleStatus==='2'}}
+            <p class="check-item reject-item"><span>审核时间:</span>${appealExamineDate}</p>
+            <p class="check-item reject-item"><span>审核人: </span> ${checkName}</p>
+            <p class="check-item reject-item">
+                <span>审核结果:</span>
+                <span class="check-status">${exampleStatus==='1'?'驳回':'审核通过'}</span>
+            </p>
+		  	{{/if}}
+		    {{if exampleStatus==='1'}}
+            <p class="reject-item"><span>驳回理由:</span>${rejectReason}</p>
+            {{/if}}
+            {{if exampleStatus==='2'}}
+            <p class="check-item"><span>处理方式:</span>${exampleOperation == 1 ? '修改' : exampleOperation == 2 ? '删除' : exampleOperation == 3 ? '新增已有' : exampleOperation == 4 ? '新增缺失' : '恢复'}</p>
+            <p class="check-item"><span>质控条目:</span>${casesEntryName}</p>
+            <p class="check-item"><span>提示信息:</span>${msg}</p>
+            <p class="check-item"><span>分值:</span>${score}</p>
+            <p class="check-item"><span>备注:</span>${exampleRemark}</p>
+            {{/if}}
+            <p class="line"></p>
+        </div>
+    </script>
+    <script type="text/html" id="appointBookTmpl">
+        <div class="page-item" code="${title}">
+            <h2 class="title titleSpecial" code="${title}">
+                {{if title==='缺陷总览'}}
+                    <span class="titlePay" data-type="2">缺陷总览</span>
+                    <span class="titleNo" data-type="1">控费缺陷</span>
+                {{/if}}
+                {{if title!=='缺陷总览'}}
+                    ${title}
+                {{/if}}
+            </h2>
+            {{if !data || data&&data.length === 0}}
+            <div class="empty">
+                <img src="../images/empty1.png" alt="空"/>
+                <p>暂无信息~</p>
+            </div>
+            {{else}}
+            {{if title==='缺陷总览'}}
+            <table class="scroll-table">
+                <thead>
+                <tr>
+                    <th width="250">来源</th>
+                    <th>缺陷详情</th>
+                    <th width="150">扣分</th>
+                </tr>
+                </thead>
+                <tbody>
+                    {{if JSON.stringify(data) == "{}"}}
+                    <tr class="empty2">
+                        <td colspan="3" class=""> 
+                            <img src="../images/empty1.png" alt="空"/>
+                            <p>暂无数据~</p></td>
+                    </tr>
+                    {{/if}}
+                {{each(i,val) data}}
+                <tr><td colspan="3" class="slide-up">${i}</td></tr>
+                {{each val}}
+                <tr code="${i}" {{if isReject==="1"}} class="high-light" {{/if}}>
+                    <td style="text-indent: 14px; {{if isDeleted=='Y'}}  text-decoration:line-through;  {{/if}}">${modelName}</td>
+                    <td>
+                        <a href="javascript:void(0);" class="page-anchor page-anchor-hover" title=${msg} {{if isDeleted=='Y'}}   style="text-decoration:line-through;"  {{/if}} code="${id}">${msg}</a>
+                    </td>
+                    <td class="red" {{if isDeleted=='Y'}}  style="text-decoration:line-through;"  {{/if}}>${score}</td>
+                </tr>
+                {{/each}}
+                {{/each}}
+                </tbody>
+            </table>
+            {{else}}<table code="${title}" class="interval-color">
+            <thead>
+            <tr>
+                <th width="100" align="center">序号</th>
+                <th>文书详情</th>
+            </tr>
+            </thead>
+            <tbody>
+            {{each(i,val) data}}
+            <tr>
+                <td align="center">${i+1}</td>
+                <td>${recTitle}</td>
+            </tr>
+            {{/each}}
+            </tbody>
+        </table>
+            {{/if}}
+            {{/if}}
+        </div>
+    </script>
+</head>
+
+<body>
+    <div class="main-part clearfix">
+        <div class="sub-menu">
+            <div class="logo">
+                <img src="../images/lantone.png" alt="" style="width: 150px;">
+            </div>
+            <ul id="subMenu" class="subMenu"></ul>
+            <a href="javascript:void(0);" class="slide-show">
+                <img src="../images/down.png" alt="">
+            </a>
+            <div class="copy-right">
+                <p>©杭州朗通信息技术有限公司</p>
+            </div>
+        </div>
+        <div class="menu-mini fl">
+            <div class="logo">
+                朗通
+            </div>
+            <ul></ul>
+            <a href="javascript:void(0);" class="slide-hide">
+                <img src="../images/up.png" alt="">
+            </a>
+
+        </div>
+        <div class="tab-container clearfix">
+            <div class="patient-info" id="patientInfo"></div>
+            <p id="loading">加载中,请稍候 ...</p>
+            <div class="flaw-table">
+                <iframe src="./nursing.html" frameborder="0" id="contentNursing" name="contentNursing"
+                    style="display: none;"></iframe>
+                <iframe src="./advice.html" frameborder="0" id="contentIframeIn" name="contentIframeIn"
+                    style="display: none;"></iframe>
+                <iframe src="./pacs.html" frameborder="0" id="pacsIframeIn" name="pacsIframeIn"
+                    style="display: none;"></iframe>
+                <iframe src="./assist.html" frameborder="0" id="assistIframeIn" name="assistIframeIn"
+                    style="display: none;"></iframe>
+                <iframe src="./pacsDetail.html" frameborder="0" id="pacsDetailIframeIn" name="pacsDetailIframeIn"
+                    style="display: none;"></iframe>
+            </div>
+            <div class="content-box fl" id="contentInfo"></div>
+            <div class="operation fr" id="flaws">
+                <div class="flaw-title">
+                    <span>缺陷详情</span>
+                    <a href="javascript:void(0);" class="add-flaw">申诉新增</a>
+                </div>
+                <div class="flaw-box content-ht">
+                    <!--<div class="empty">
+                        <img src="../images/empty.png" alt="空"/>
+                        <p>暂无详情~</p>
+                    </div>-->
+                </div>
+            </div>
+        </div>
+    </div>
+    <div id="mainBox"></div>
+    <div class="modal" id="delModal">
+        <div class="cover"></div>
+        <div class="modal-box">
+            <div class="modal-header clearfix">
+                <span class="title">提示</span>
+                <a class="close" href="javascript:void(0);">×</a>
+            </div>
+            <div class="modal-body">
+                <!--<p>确定要删除该评分记录吗?</p>-->
+            </div>
+            <div class="modal-footer">
+                <a class="close cancel" href="javascript:void(0);">关闭</a>
+                <a class="confirm" href="javascript:void(0);">提交</a>
+            </div>
+        </div>
+    </div>
+</body>
+
+</html>

+ 91 - 52
src/html/index.html

@@ -1,18 +1,25 @@
 <!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">
-  <!--<link rel="shortcut icon" href="../resource/favicon.ico" type="image/x-icon">-->
-  <title>AI病案质控平台-首页</title>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <!--<link rel="shortcut icon" href="../resource/favicon.ico" type="image/x-icon">-->
+    <title>AI病案质控平台-首页</title>
 </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>
+        <li class="list-1 ${code}"><p>${name}
+            {{if num }}
+            {{if onAppeal>0}}
+            <span class="dian"></span>
+            {{/if}}
+            {{/if}}
+        </p>
     {{else}}
         {{if showStatus==1}}
             <li class="page ${code}" code="${code}">${name}
@@ -26,14 +33,26 @@
                         <li class="page" code="${code}">运行病历稽查表</li>
                     {{else}}
                     {{/if}} -->
-                    <li class="page" code="${code}">${name}</li>
+                    <li class="page" code="${code}">${name}
+                        {{if code=='YH-SSXX-SSSH'}}
+                            {{if num }}
+                            <span class="reds">${num}</span>
+                            {{/if}}
+                            {{/if}}
+                    </li>
                 {{else}}
                     {{if isPlacefile==1&&code!='YH-ZKK-RYRSTJ'&&code!='YH-KSZR-YXBLJCS_XQ'&&code!='YH-ZKK-YXBLJCB'&&code!='YH-KSZR-RYRSTJ_XQ'}}
                         <!-- {{if code == 'YH-ZKK-YXBLJCB'}}
                             <li class="page" code="${code}">终末病历稽查表</li>
                         {{else}}
                         {{/if}} -->
-                        <li class="page" code="${code}">${name}</li>
+                        <li class="page" code="${code}">${name}
+                            {{if code=='YH-SSXX-SSSH'}}
+                            {{if num }}
+                            <span class="reds">${num}</span>
+                            {{/if}}
+                            {{/if}}
+                        </li>
                     {{/if}}
                 {{/if}}
             {{/each}}
@@ -46,8 +65,14 @@
         {{else}}
             {{if subMenuList.length}}
     <li class="list-1 ${code}">
+        {{if num }}
+            {{if onAppeal>0}}
+            <span class="dian"></span>
+            {{/if}}
+            {{/if}}
             {{else}}
     <li class="page ${code}" code="${code}">
+        
             {{/if}}
         {{/if}}
         {{if subMenuList.length}}
@@ -58,14 +83,26 @@
                         <li class="page" code="${code}">运行病历稽查表</li>
                     {{else}}
                     {{/if}} -->
-                    <li class="page" code="${code}">${name}</li>
+                    <li class="page" code="${code}">${name}
+                        {{if code=='YH-SSXX-SSSH'}}
+                            {{if num }}
+                            <span class="reds">${num}</span>
+                            {{/if}}
+                            {{/if}}
+                    </li>
                 {{else}}
                     {{if isPlacefile==1&&code!='YH-ZKK-RYRSTJ'&&code!='YH-KSZR-YXBLJCS_XQ'&&code!='YH-ZKK-YXBLJCB'&&code!='YH-KSZR-RYRSTJ_XQ'}}
                         <!-- {{if code == 'YH-ZKK-YXBLJCB'}}
                             <li class="page" code="${code}">终末质控稽查表</li>
                         {{else}}
                         {{/if}} -->
-                        <li class="page" code="${code}">${name}</li>
+                        <li class="page" code="${code}">${name}
+                            {{if code=='YH-SSXX-SSSH'}}
+                            {{if num }}
+                            <span class="reds">${num}</span>
+                            {{/if}}
+                            {{/if}}
+                        </li>
                     {{/if}}
                 {{/if}}
             {{/each}}
@@ -74,55 +111,57 @@
     </li>
     {{/if}}
 </script>
+
 <body>
-  <div class="container">
-      <div class="main-body clearfix">
-          <div class="menu fl">
-              <div class="logo">
-                  <img src="../images/lantone.png" alt="">
+    <div class="container">
+        <div class="main-body clearfix">
+            <div class="menu fl">
+                <div class="logo">
+                    <img src="../images/lantone.png" alt="">
                 </div>
                 <ul class="menuList"></ul>
                 <a href="javascript:void(0);" class="slide-hide">
                     <img src="../images/down.png" alt="">
                 </a>
-              <div class="copy-right"><p>©杭州朗通信息技术有限公司</p></div>
-          </div>
-          <div class="menu-mini fl">
-              <div class="logo">
-                  朗通
-              </div>
-              <ul></ul>
-              <a href="javascript:void(0);" class="slide-show">
-                  <img src="../images/up.png" alt="">
-              </a>
-          
-          </div>
-          <div class="main" id="mainBox">
-              <div class="header clearfix">
-                  <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">
-                      <a class="setting" id="userName" href="javascript:void(0);">***</a>
-                      <ul class="userAction">
-                          <li id="changeWord">修改密码</li>
-                          <li><a class="login-out">退出</a></li>
-                      </ul>
-                  </div>
-                  <div class="dateDetail fr">
-                
-                  </div>
-              </div>
-              <iframe src="" frameborder="0" id="contentIframe"></iframe>
-             
+                <div class="copy-right">
+                    <p>©杭州朗通信息技术有限公司</p>
+                </div>
+            </div>
+            <div class="menu-mini fl">
+                <div class="logo">
+                    朗通
+                </div>
+                <ul></ul>
+                <a href="javascript:void(0);" class="slide-show">
+                    <img src="../images/up.png" alt="">
+                </a>
+
+            </div>
+            <div class="main" id="mainBox">
+                <div class="header clearfix">
+                    <div class="title fl">
+                        <!--<img src="../images/logo.png" alt="logo" />-->
+                        <span class="subtitle">AI病案质控平台</span>
 
-          </div>
-      </div>
+                        <span class="qiehuan"><img src="../images/qiehuan2.png" alt=""><i>切换运行质控</i></span>
+                    </div>
+                    <div class="login fr">
+                        <a class="setting" id="userName" href="javascript:void(0);">***</a>
+                        <ul class="userAction">
+                            <li id="changeWord">修改密码</li>
+                            <li><a class="login-out">退出</a></li>
+                        </ul>
+                    </div>
+                    <div class="dateDetail fr">
+
+                    </div>
+                </div>
+                <iframe src="" frameborder="0" id="contentIframe"></iframe>
+
+
+            </div>
+        </div>
     </div>
 </body>
 
-</html>
-
+</html>

+ 45 - 3
src/html/qcScore.html

@@ -138,9 +138,46 @@
          </table>
          {{/if}}
     </script>
+    <script type="text/html" id="appealStatusTmpl">
+        <div class="edit-box show-box ${exampleStatus==='1'?'refuse':exampleStatus==='2'?'pass':''}">
+            <p><span>申诉时间: </span> ${appealCreateDate}</p>
+            <p><span>申诉人: </span> ${claimantName}</p>
+            <p><span>审核人: </span> ${checkName}</p>
+            <p><span>操作类型: </span> ${appealOperationType == 0 ? '删改条目' : appealOperationType == 1 ? '新增已有条目' : appealOperationType == 2 ? '新增缺失条目' : '恢复条目'}</p>
+            {{if appealOperationType==='1'}}
+            <p><span>质控条目:</span>${casesEntryName}</p>
+            <p><span>提示信息:</span>${casesEntryMsg}</p>
+            <p><span>分值:</span>${value}</p>
+            <p><span>备注:</span>${appealRemark}</p>
+		  	{{/if}}
+            <p><span>申诉说明: </span> ${appealExplain}</p>
+            {{if exampleStatus==='1'||exampleStatus==='2'}}
+            <p class="check-item reject-item"><span>审核时间:</span>${appealExamineDate}</p>
+            <p class="check-item reject-item"><span>审核人: </span> ${checkName}</p>
+            <p class="check-item reject-item">
+                <span>审核结果:</span>
+                <span class="check-status">${exampleStatus==='1'?'驳回':'审核通过'}</span>
+            </p>
+            {{/if}}
+            {{if exampleStatus==='1'}}
+            <p class="reject-item"><span>驳回理由:</span>${rejectReason}</p>
+            {{/if}}
+            {{if exampleStatus==='2'}}
+            <p class="check-item"><span>处理方式:</span>${exampleOperation == 1 ? '修改' : exampleOperation == 2 ? '删除' : exampleOperation == 3 ? '新增已有' : exampleOperation == 4 ? '新增缺失' : '恢复'}</p>
+            <p class="check-item"><span>质控条目:</span>${casesEntryName}</p>
+            <p class="check-item"><span>提示信息:</span>${msg}</p>
+            <p class="check-item"><span>分值:</span>${score}</p>
+            <p class="check-item"><span>备注:</span>${exampleRemark}</p>
+            {{/if}}
+            <p class="line"></p>
+        </div>
+    </script>
     <script type="text/html" id="flawTmpl">
         <div {{if isReject==='1'}} class="flaw-item high-light" {{else}} class="flaw-item" {{/if}} code="${modelName.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'')}">
             <div  {{if isDeleted==="Y"}} class="delete title"{{else}}  class="title" {{/if}}>
+                {{if exampleStatus=="0"||exampleStatus=="1"||exampleStatus=="2"}}
+                <span data_id="${appealInfoId}" data_type="${exampleStatus}"  data_casesEntryId="${casesEntryId}" data_qcresultDetailId="${id}" class="btn ${exampleStatus==='0'?'appeal':exampleStatus==='2'?'examine':exampleStatus==='1'?'reject':''}" msg="${msg}">${exampleStatus==='0'?'申诉':exampleStatus==='2'?'审核':exampleStatus==='1'?'驳回':''}</span>
+                {{/if}}
                 {{if gradeType===2}}
                 <img {{if explainInfo}} title="${explainInfo}" {{/if}} src="../images/tag.png" alt=""/>
                 {{/if}}
@@ -158,12 +195,17 @@
                 {{/if}}
                 {{if isDeleted==="N"}}
                 <div class="oper fr">
+                    {{if exampleStatus=="0"&&hasAu3}}
+                    {{else}}
                     <a class="edit-flaw blue" code="${id}" href="javascript:void(0);" style="margin-right: 18px;">修改</a>
                     <a class="del-flaw red" code="${id}" href="javascript:void(0);">删除</a>
+                    {{/if}}
                 </div>
                 {{else}}
                 <div class="oper fr">
+                    {{if exampleStatus != "0"}}
                     <a class="recover-flaw blue" code="${id}" href="javascript:void(0);">恢复</a>
+                    {{/if}}
                 </div>
                 {{/if}}
             </div>
@@ -185,7 +227,7 @@
         <div class="edit-box">
             <p><span>质控条目: </span><input disabled type="text" class="ellipsis" title="${standardMsg}" value="${standardMsg}" /></p>
             <!--<p><span>模块名称: </span><input type="text" value="${modelName}" /></p>-->
-            <p><span>提示信息: </span><input id="qcMsg" class="ellipsis" type="text" title="${msg}" value="${msg}" /></p>
+            <p><span>提示信息: </span><input id="qcMsg" class="ellipsis" type="text" maxlength="100" title="${msg}" value="${msg}" /></p>
             <p><span style="margin-right: 8px">分值: </span> <input id="qcScore" type="text" value="${score}" /></p>
             <p><span>备注: </span><input id="qcInfo" class="ellipsis" type="text" title="${explainInfo}" value="${explainInfo}" autocomplete="off"/></p>
             <p class="warning"><span></span><span class="red">支持≥0的数字输入,最多保留小数点后1位~</span></p>
@@ -204,7 +246,7 @@
                 <ul></ul>
             </div>
             <!--<p><span>模块名称: </span><input type="text" value="${modelName}" /></p>-->
-            <p><span style="margin-right: 16px;">提示信息:</span><input title="${msg}" class="ellipsis" id="addQcMsg" type="text" value="${msg}" /></p>
+            <p><span style="margin-right: 16px;">提示信息:</span><input title="${msg}" maxlength="100" class="ellipsis" id="addQcMsg" type="text" value="${msg}" /></p>
             <p><span>分值:</span> <input id="addQcScore" type="text" value="${score}" /></p>
             <p><span style="margin-right: 16px;">备注:</span><input title="${explainInfo}" class="ellipsis" id="addQcInfo" type="text" value="${explainInfo}" autocomplete="off"/></p>
             <p class="warning"><span></span><span class="red">支持≥0的数字输入,最多保留小数点后1位~</span></p>
@@ -372,7 +414,7 @@
                 <!--<p>确定要删除该评分记录吗?</p>-->
             </div>
             <div class="modal-footer">
-                <a class="close cancel" href="javascript:void(0);">取消</a>
+                <a class="close cancel" href="javascript:void(0);">关闭</a>
                 <a class="confirm" href="javascript:void(0);">保存</a>
             </div>
         </div>

BIN
src/images/appeal.png


BIN
src/images/appeal_a.png


BIN
src/images/pass.png


BIN
src/images/refuse.png


BIN
src/images/warns.png


+ 19 - 1
src/js/api.js

@@ -207,7 +207,25 @@ const api = {
   getQcClickDeptList:'/qc/analysis/getQcClickDeptList',		//临床质控使用统计科室列表
   getQcClickDept:'/qc/analysis/getQcClickInnerPage',   //临床质控使用统计内页
   getQcClickInnerPageByExport:'/qc/analysis/getQcClickInnerPageByExport',//临床质控使用统计内页-导出
-
+  /***********申诉核查************/
+  getWorkById:'/qc/appealInfo/getWorkById',   //申诉发起列表
+  addAppealInfo:'/qc/appealInfo/addAppealInfo', //发起申诉
+  rejected:'/qc/appealExamineInfo/rejected',  //申诉驳回
+  getReviewer:'/qc/appealInfo/getReviewer', //获取审核人
+  getComplaintRecord:'/qc/appealExamineInfo/getComplaintRecord', //申诉记录列表
+  getApprovedView:'/qc/appealExamineInfo/getApprovedView',    //获取申诉详情
+  getAppealReview:'/qc/appealExamineInfo/getAppealReview', //申诉审核列表
+  approved:'/qc/appealExamineInfo/approved', //审核通过
+  getAppealInfo:'/qc/appealInfo/getAppealInfo', //申诉记录
+  cancelAppealInfo:'/qc/appealInfo/cancelAppealInfo', //撤回申诉
+  getAppealOperationType:'/qc/appealInfo/getAppealOperationType', //再次申诉操作类型
+  getAuditNumber:'/qc/appealExamineInfo/getAuditNumber', //获取待审核数量
+  getAppealReviewExport:'/qc/appealExamineInfo/getAppealReviewExport', //申诉审核导出
+  getComplaintRecordExport:'/qc/appealExamineInfo/getComplaintRecordExport', //申诉记录导出
+  getAppealReviewDictionary:'/qc/appealExamineInfo/getAppealReviewDictionary', //操作类型
+  getAppealDept:'/qc/appealInfo/getAppealDept', //申诉科室
+  getAppealMode:'/qc/appealInfo/getAppealMode', //申诉模块
+  getComplaintDetailMsg:'/qc/appealExamineInfo/getComplaintDetailMsg', //获取缺陷详情
 }
 const ywCheckApi = {
   addMedCheckInfo: '/qc/medCheckInfo/addMedCheckInfo',   //核查

File diff suppressed because it is too large
+ 884 - 0
src/js/appealCheck.js


+ 382 - 0
src/js/appealExamine.js

@@ -0,0 +1,382 @@
+const $ = require('jquery');
+require("../css/appealExamine.less");
+require('./modal.js');
+require('jquery-templates');
+const { api } = require('./api.js')
+const { post, getCookie, getUrlArgObjectNew, getLogoParam, listenScroll, exportTimeLimit } = require('./utils.js')
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./../resource/jquery-ui/jquery-ui.min.css');
+listenScroll()
+let srcUrl = $("#contentIframe", parent.document).attr("src")
+const id = getUrlArgObjectNew("id", srcUrl) || "";
+const hospitalId = getUrlArgObjectNew("hospitalId", srcUrl) || "";
+const behospitalCode = getUrlArgObjectNew("behospitalCode", srcUrl) || "";
+const casesEntryId = getUrlArgObjectNew("casesEntryId", srcUrl) || "";
+const qcresultDetailId = getUrlArgObjectNew("qcresultDetailId", srcUrl) || "";
+const appealOperationType = getUrlArgObjectNew("appealOperationType", srcUrl) || "";
+const form = getUrlArgObjectNew("form", srcUrl) || "";
+const page = getUrlArgObjectNew("page", srcUrl) || "";
+let behosDateStart = getUrlArgObjectNew("behosDateStart", srcUrl) || ""
+let behosDateEnd = getUrlArgObjectNew("behosDateEnd", srcUrl) || ""
+let deptId = getUrlArgObjectNew("deptId", srcUrl) || ""
+let deptName = getUrlArgObjectNew("deptName", srcUrl) || ""
+let moduleName = getUrlArgObjectNew("moduleName", srcUrl) || ""
+let name = getUrlArgObjectNew("name", srcUrl) || ""
+let operationType = getUrlArgObjectNew("operationType", srcUrl) || ""
+let state = getUrlArgObjectNew("state", srcUrl) || ""
+let patientName = getUrlArgObjectNew("patientName", srcUrl) || ""
+let appealInfo, appealExamineRecordDTOList, auditNumber;
+(function () {
+    getApprovedView()
+    if (form == 2) {
+        $(".bot").hide();
+        $('.appealExamine h2').html('申诉信息 > 申诉审核 > 查看');
+    } else if (form == 3) {
+        $(".bot").hide();
+        $('.appealExamine h2').html('申诉信息 > 申诉记录 > 查看');
+    }
+})();
+//获取审核详情
+function getApprovedView() {
+    const param = {
+        id: id,
+        behospitalCode: behospitalCode,
+        casesEntryId: casesEntryId,
+        hospitalId: hospitalId,
+        qcresultDetailId: qcresultDetailId,
+    }
+    return post(api.getApprovedView, param).then(res => {
+        if (res.data.code == '0') {
+            data = res.data.data
+            console.log();
+            appealExamineRecordDTOList = {
+                casesEntryName: data.appealExamineRecordDTOList[data.appealExamineRecordDTOList.length - 1].casesEntryName,
+                value: data.appealExamineRecordDTOList[data.appealExamineRecordDTOList.length - 1].value,
+                msg: data.qcresultDetailMsg,
+                explainInfo: data.appealExamineRecordDTOList[data.appealExamineRecordDTOList.length - 1].appealRemark,
+            };
+            appealInfo = {
+                exampleOperation: 2,
+                casesEntryName: data.casesEntryName,
+                casesEntryMsg: data.casesEntryMsg,
+                remark: data.remark,
+                behospitalCode: data.behospitalCode,
+                modeId: data.modeId,
+                qcResultAlgVO: {
+                    casesEntryId: casesEntryId,
+                    id: data.qcresultDetailId,
+                    casesScore: data.appealExamineRecordDTOList[data.appealExamineRecordDTOList.length - 1].casesScore,
+                    msg: data.qcresultDetailMsg,
+                    score: data.qcresultDetaiValue,
+                    isReject: data.appealExamineRecordDTOList[data.appealExamineRecordDTOList.length - 1].isReject,
+                    explainInfo: data.appealExamineRecordDTOList[data.appealExamineRecordDTOList.length - 1].appealRemark,
+                }
+            };
+            $('.info').html('');
+            $('.content').html('');
+            $('.history').html('');
+            getInfo(data);
+            getCon(data);
+            getHistory(data.appealExamineRecordDTOList)
+            // getAppealInfo(id, behospitalCode, casesEntryId, hospitalId, qcresultDetailId);
+        } 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) => {
+
+    })
+}
+function getAppealInfo(id, behospitalCode, casesEntryId, hospitalId, qcresultDetailId) {
+    const param = {
+        id: id,
+        behospitalCode: behospitalCode,
+        casesEntryId: casesEntryId,
+        hospitalId: hospitalId,
+        qcresultDetailId: qcresultDetailId,
+    }
+    return post(api.getAppealInfo, param).then(res => {
+        if (res.data.code == '0') {
+            data = res.data.data.appealExamineRecordDTOList
+            getHistory(data)
+        } 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) => {
+
+    })
+}
+
+function getInfo(data) {
+    let str = ''
+    str += `<span class="info-title">病案号:${data.behospitalCode || '-'}</span>
+        <span class="info-title">姓名:${data.name || '-'}</span>
+        <span class="info-title">性别:${data.sex || '-'}</span>
+        <span class="info-title">年龄:${data.age || '-'}</span>
+        <span class="info-title">科室:${data.behDeptName || '-'}</span>
+        <span class="info-title">主管医生:${data.doctorName || '-'}</span>
+        <span class="info-title">入院时间:${data.behospitalDate || '-'}</span>
+        <span class="info-title">出院时间:${data.leaveHospitalDate || '-'}</span>`;
+    $('.info').append(str);
+}
+function getCon(data) {
+    let str = ''
+    str += `<p class="con-title">申诉模块:${data.modeName || '-'}</p>
+        <p class="con-title">病历内容:${data.defectContent || '-'}</p>
+        <p class="con-title">缺陷详情:${data.qcresultDetailMsg || '-'}</p>
+        <p class="con-title">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评分:${data.qcresultDetaiValue == 0 ? '0' : data.qcresultDetaiValue ? -data.qcresultDetaiValue : '-'}</p>
+        <p class="con-title">病案详情:<span class="goDetail">查看</span></p>`;
+    $('.content').append(str);
+    $('.goDetail').on('click', function (e) {
+        scoreDetail(data.behospitalCode, data.age, 'YH-BLZK-ZKSSKS', data.name, data.modeName)
+    })
+
+}
+
+function getHistory(data) {
+    let str = ''
+    for (let i = 0; i < data.length; i++) {
+        const item = data[i]
+        console.log(item);
+        str += `<div class="box" style="border-top: 1px solid #333;margin-top: 10px;padding-top: 10px;">
+            <p class="con-title"><span>申诉时间:${item.appealCreateDate || '-'}</span><span>申诉人:${item.claimantName || '-'}</span><span>审核人:${item.checkName || '-'}</span></p>
+            <p class="con-title">操作类型:${item.appealOperationType == 0 ? '删改条目' : item.appealOperationType == 1 ? '新增已有条目' : item.appealOperationType == 2 ? '新增缺失条目' : '恢复条目'}</p>
+            ${item.appealOperationType == 1 ?
+                `<p class="con-title">质控条目:${item.casesEntryName || '-'}</p>
+                <p class="con-title">提示信息:${item.casesEntryMsg || '-'}</p>
+                <p class="con-title">分值:${item.value == 0 ? '0' : item.value ? item.value : '-'}</p>
+                <p class="con-title">备注:${item.appealRemark || '-'}</p>
+                `: ""}
+            <p class="con-title">申诉说明:${item.appealExplain || '-'}</p>
+            ${item.exampleStatus == 2 ?
+                `<p class="con-title" ><span>审核时间:${item.appealExamineDate || '-'}</span><span>审核人:${item.checkName || '-'}</span></p>
+                <p class="con-title">审核结果:审核通过</p>
+                <p class="con-title">${item.appealOperationType == 2 ? '处理结果:' : '处理方式:'}${item.appealOperationType == 2 ? item.processResult : item.exampleOperation == 1 ? '修改' : item.exampleOperation == 2 ? '删除' : item.exampleOperation == 3 ? '新增已有' : item.exampleOperation == 4 ? '新增缺失' : '恢复'}</p>`
+                : ""}
+                
+                ${item.exampleStatus == 2 && item.appealOperationType != 2 ?
+                `<p class="con-title">质控条目:${item.casesEntryName || '-'}</p>
+                <p class="con-title">提示信息:${item.msg || '-'}</p>
+                <p class="con-title">分值:${item.score == 0 ? '0' : item.score ? item.score : '-'}</p>
+                <p class="con-title">备注:${item.exampleRemark || '-'}</p>`
+                : ""}
+                ${item.exampleStatus == 1 ?
+                `<p class="con-title" >审核时间:${item.appealExamineDate || '-'}<span>审核人:${item.checkName || '-'}</span></p>
+                <p class="con-title">审核结果:驳回</p>
+                <p class="con-title">驳回理由:${item.rejectReason || '-'}</p>`
+                : ""}
+        </div>`;
+    }
+    $('.history').append(str);
+}
+
+
+function scoreDetail(id, age, code, name, casesName) {
+    const logoParam = getLogoParam();
+    window.open(`./appealUserPage.html?id=${id}&age=${age}&code=${code}&hid=${getCookie('hospitalid')}&name=${name}&form=44&casesName=${casesName || '缺陷总览'}` + logoParam)
+}
+
+$(document).on("click", "input[type=radio][value=1]", (e) => {
+    $(".endis").attr("disabled", false);
+});
+$(document).on("click", "input[type=radio][value=2]", (e) => {
+    $(".endis").attr("disabled", true);
+});
+$(document).on("click", ".btn-sure", (e) => {
+    $("#delModal .modal-body").html("");
+    $("#delModal .modal-header .title").html('审核');
+    $("#delModal").show();
+    if (appealOperationType == 0) {
+        $("#appealDel").tmpl(appealExamineRecordDTOList).appendTo("#delModal .modal-body");
+        $("#delModal .confirm").text("确定").unbind("click").click(function () {
+            approved(1)
+        });
+    } else if (appealOperationType == 1) {
+        $("#appealAdd").tmpl(appealExamineRecordDTOList).appendTo("#delModal .modal-body");
+        $("#delModal .confirm").text("确定").unbind("click").click(function () {
+            approved(2)
+        });
+    } else if (appealOperationType == 2) {
+        $("#appealDef").tmpl(appealExamineRecordDTOList).appendTo("#delModal .modal-body");
+        $("#delModal .confirm").text("确定").unbind("click").click(function () {
+            approved(3)
+        });
+    } else if (appealOperationType == 3) {
+        $("#appealRec").tmpl(appealExamineRecordDTOList).appendTo("#delModal .modal-body");
+        $("#delModal .confirm").text("确定").unbind("click").click(function () {
+            approved(4)
+        });
+    }
+});
+
+
+
+$(document).on("click", ".goback", (e) => {
+    console.log(form);
+    if (form == 1 || form == 2) {
+        $(parent.document).find("#contentIframe").attr("src", './appealCheck.html?page=' + page + "&name=" + name + "&operationType=" + operationType + "&state=" + state + "&behosDateStart=" + behosDateStart + "&behosDateEnd=" + behosDateEnd + "&deptId=" + deptId + "&deptName=" + deptName + "&moduleName=" + moduleName);
+    } else {
+        $(parent.document).find("#contentIframe").attr("src", './appealHistory.html?page=' + page + "&patientName=" + patientName + "&name=" + name + "&operationType=" + operationType + "&state=" + state + "&behosDateStart=" + behosDateStart + "&behosDateEnd=" + behosDateEnd + "&deptId=" + deptId + "&deptName=" + deptName + "&moduleName=" + moduleName);
+    }
+
+});
+
+
+$(document).on("click", ".btn-cancel", (e) => {
+    $("#delModal .modal-body").html("");
+    $("#delModal").show();
+    $("#delModal .modal-header .title").html('驳回');
+    $("#appealReject").tmpl(appealExamineRecordDTOList[0]).appendTo("#delModal .modal-body");
+    $("#delModal .confirm").text("确定").unbind("click").click(function () {
+        rejected()
+    });
+});
+//审核
+function approved(type) {
+    console.log(type);
+    if (type == 1) {
+        appealInfo.exampleOperation = $('input:radio:checked').val()
+        if ($('input:radio:checked').val() == 2) {
+            appealInfo.delStatus == 0
+        } else {
+            appealInfo.casesEntryMsg == $(".case").val().trim()
+            appealInfo.qcResultAlgVO.score = $('.score').val().trim()
+            appealInfo.qcResultAlgVO.explainInfo = $('.explainInfo').val().trim()
+            appealInfo.qcResultAlgVO.msg = $('.msg').val().trim()
+            let val = $(".msg").val().trim()
+            let score = $(".score").val().trim()
+            if (!val) {
+                $(".appealDel .warning .red").text("提示信息不能为空~");
+                $(".appealDel .warning").show();
+                return
+            }
+            if (!score) {
+                $(".appealDel .warning .red").text("分值不能为空~");
+                $(".appealDel .warning").show();
+                return
+            }
+        }
+    } else if (type == 2) {
+        appealInfo.exampleOperation = 3
+        appealInfo.qcResultAlgVO.score = $('.score').val().trim()
+        appealInfo.qcResultAlgVO.explainInfo = $('.explainInfo').val().trim()
+        appealInfo.qcResultAlgVO.msg = $('.msg').val().trim()
+        let val = $(".msg").val().trim()
+        let score = $(".score").val().trim()
+        if (!val) {
+            $(".appealAdd .warning .red").text("提示信息不能为空~");
+            $(".appealAdd .warning").show();
+            return
+        }
+        if (!score) {
+            $(".appealAdd .warning .red").text("分值不能为空~");
+            $(".appealAdd .warning").show();
+            return
+        }
+        
+    } else if (type == 3) {
+        appealInfo.exampleOperation = 4
+        appealInfo.processResult = $(".textarea").val().trim()
+        let val = $(".textarea").val().trim()
+        let num = 500
+        if (!val) {
+            $(".appealDef .warning .red").text("处理结果不能为空~");
+            $(".appealDef .warning").show();
+            return
+        } else if (val.length > num) {
+            $(".appealDef .warning .red").text("处理结果不能超过" + num + "个字~");
+            $(".appealDef .warning").show();
+            return
+        }
+    } else if (type == 4) {
+        appealInfo.exampleOperation = 5
+        appealInfo.qcResultAlgVO.score = $('.score').val().trim()
+
+    }
+    const param = {
+        'id': id,
+        ...appealInfo,
+    };
+    post(api.approved, param).then(function (res) {
+        if (res.data.code === '0') {
+            $("#delModal").hide();
+            $(".bot").hide();
+            getApprovedView()
+            getAuditNumber()
+            $.alerModal({ "message": "审核成功", type: "tip", time: '1000', win: true });
+        } else {
+            $.alerModal({ "message": res.data.msg || '失败,请重试~', type: "tip", time: '1000', win: 'warn' });
+
+        }
+    }).catch(() => {
+        $.alerModal({ "message": '失败,请重试~', type: "tip", time: '1000', win: 'default' });
+
+    });
+}
+
+//驳回
+function rejected() {
+    let val = $(".textarea2").val().trim()
+    let num = 500
+    if (!val) {
+        $(".appealReject .warning .red").text("驳回理由不能为空~");
+        $(".appealReject .warning").show();
+        return
+    } else if (val.length > num) {
+        $(".appealReject .warning .red").text("驳回理由不能超过" + num + "个字~");
+        $(".appealReject .warning").show();
+        return
+    }
+    const param = {
+        'behospitalCode': behospitalCode,
+        'id': id,
+        rejectedReason: $(".textarea2").val().trim()
+    };
+    post(api.rejected, param).then(function (res) {
+        if (res.data.code === '0') {
+            $("#delModal").hide();
+            $(".bot").hide();
+            getApprovedView()
+            getAuditNumber()
+            $.alerModal({ "message": "驳回成功", type: "tip", time: '1000', win: true });
+        } else {
+            $.alerModal({ "message": res.data.msg || '失败,请重试~', type: "tip", time: '1000', win: 'default' });
+        }
+    }).catch(() => {
+        $.alerModal({ "message": '失败,请重试~', type: "tip", time: '1000', win: 'default' });
+    });
+}
+
+//获取待审核数量
+function getAuditNumber() {
+    let isPlacefile = getCookie('isPlacefile') || 1
+    return post(api.getAuditNumber, { analyzeType: isPlacefile }).then(res => {
+        if (res.data.code == '0') {
+            auditNumber = res.data.data > 99 ? '99+' : res.data.data
+            if (auditNumber == 0) {
+                $(".menu .page", parent.document).children('.reds').hide()
+                $(".menu .dian", parent.document).hide()
+            } else {
+                $(".menu .page", parent.document).children('.reds').html(auditNumber)
+            }
+        } 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) => {
+
+    })
+}

File diff suppressed because it is too large
+ 1041 - 0
src/js/appealHistory.js


File diff suppressed because it is too large
+ 1136 - 0
src/js/appealInit.js


File diff suppressed because it is too large
+ 1026 - 0
src/js/appealUserPage.js


+ 48 - 12
src/js/index.js

@@ -20,6 +20,7 @@ const {
   setCookie,
   setLocal,
   getCookie,
+  clearAllCookie,
   focusMenuItem,
   getUrlArgObject
 } = require('./utils.js');
@@ -32,7 +33,9 @@ const otherLogo = getUrlArgObject("adLg");
 const is3His = getUrlArgObject('is3His')
 //token判断没有跳登录
 const token = localStorage.getItem('accessToken');
-if (!token||localStorage.getItem('toLogin')==='1') {
+const onAppeal = getCookie('checkAuth') && getCookie('checkAuth').indexOf('10')
+let auditNumber;
+if (!token || localStorage.getItem('toLogin') === '1') {
   window.location.href = '../login.html';
 }
 const modalDom = `
@@ -103,10 +106,12 @@ $(function () {
   if (isPlacefile == 0) {
     $(this).find('.qiehuan i').html('切换病案质控')
     $('.subtitle').html('AI运行质控平台')
+    getAuditNumber()
     getMenu()
   } else if (isPlacefile == 1) {
     $(this).find('.qiehuan i').html('切换运行质控')
     $('.subtitle').html('AI病案质控平台')
+    getAuditNumber()
     getMenu()
   }
   $(".header .title .qiehuan").click(function () {
@@ -121,6 +126,7 @@ $(function () {
       setCookie("isPlacefile", 1)
     }
     $('#contentIframe').attr('src', $('#contentIframe').attr('src'));
+    getAuditNumber()
     getMenu();
   })
   $(".header .title .qiehuan").mouseenter(function () {
@@ -327,7 +333,26 @@ function userActionHide(e) {
   $(".userAction").css("display", "none")
 }
 window.userActionHide = userActionHide
+//获取待审核数量
+function getAuditNumber() {
+  isPlacefile = getCookie('isPlacefile') || 1
+  return post(api.getAuditNumber, {
+    analyzeType:isPlacefile
+  }).then(res => {
+    if (res.data.code == '0') {
+      auditNumber = res.data.data > 99 ? '99+' : res.data.data
+    } 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) => {
 
+  })
+}
 function initMenu(data, userInfo) {
   //菜单数据填充
   $(".menu ul").html("");
@@ -372,7 +397,7 @@ function initMenu(data, userInfo) {
     $(".menu-mini").hide();
     $(".menu,.copy-right").show().animate({
       "width": "205px"
-    }, function () {});
+    }, function () { });
     $(".main").animate({
       "margin-left": "205px"
     });
@@ -431,10 +456,7 @@ function getMenu() {
     if (res.data.code === '0') {
       const data = res.data.data;
       for (let i = 0; i < data.menuWrappers.length; i++) {
-        // if (isPlacefile === '0' && data.menuWrappers[i].code === 'YH-ZKHC') {
-        //   data.menuWrappers.splice(i, 1);
-        //   continue;
-        // }
+
         for (let j = 0; j < data.menuWrappers[i].subMenuList.length; j++) {
           if (isPlacefile === '0' && is3His && (data.menuWrappers[i].subMenuList[j].code === 'YH-ZKK-BASYHGLYSZB_XQ' || data.menuWrappers[i].subMenuList[j].code === 'YH-KSZR-BASYHGLYSZB_XQ')) {
             data.menuWrappers[i].subMenuList.splice(j, 1);
@@ -443,6 +465,18 @@ function getMenu() {
         }
         data.menuWrappers[i].isPlacefile = isPlacefile
       }
+      for (let i = 0; i < data.menuWrappers.length; i++) {
+        if (data.menuWrappers[i].code === 'YH-SSXX') {
+          data.menuWrappers[i].num = auditNumber
+          data.menuWrappers[i].onAppeal = onAppeal
+          for (let j = 0; j < data.menuWrappers[i].subMenuList.length; j++) {
+            if (data.menuWrappers[i].subMenuList[j].code === 'YH-SSXX-SSSH') {
+              data.menuWrappers[i].subMenuList[j].num = auditNumber
+            }
+          }
+        }
+      }
+      
       initMenu(data.menuWrappers, data.userLoginDTO);
       userInfo = data.userLoginDTO
       setCookie("hospital", data.basHospitalInfoDTO.name)
@@ -450,9 +484,10 @@ function getMenu() {
       getAllCode(data.menuWrappers);
       for (let i = 0; i < data.menuWrappers.length; i++) {
         if (isPlacefile === '0' && data.menuWrappers[i].code === 'YH-ZKHC') {
-          $(".YH-ZKHC").hide()
+          $(".menuList .YH-ZKHC").hide()
+          $(".menu-mini .YH-ZKHC").hide()
+          
         }
-
       }
     }
   })
@@ -569,7 +604,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)
 }
 
@@ -582,7 +617,7 @@ function bindMenu() {
 
 window.addEventListener('message', e => {
   //console.trace("token已清除index", e)
-  let data = e.data||'{}';
+  let data = e.data || '{}';
   if (typeof data == 'string') {
     data = JSON.parse(data)
   }
@@ -596,11 +631,12 @@ window.addEventListener('message', e => {
       width: '470',
       time: 1000,
       cancalText: '我知道了',
-	  isFather: true,
-	  fatherWrapper: $("#mainBox", parent.document),
+      isFather: true,
+      fatherWrapper: $("#mainBox", parent.document),
       sureBtn: false,
       message: data.data || '登录过期',
       callback: function () {
+        clearAllCookie()
         window.location.href = 'login.html'
       }
     });

+ 3 - 1
src/js/login.js

@@ -5,7 +5,7 @@ require("./modal.js")
 
 const { api } = require('./api.js')
 
-const { post, setCookie, delCookie, getUrlArgObject, toast } = require('../js/utils.js');
+const { post, setCookie, delCookie, getUrlArgObject, toast,clearAllCookie } = require('../js/utils.js');
 const hideLogo = getUrlArgObject("hideLg");
 const otherLogo = getUrlArgObject("adLg");
 let type;
@@ -13,6 +13,8 @@ let is3His=false; //医院标记:湘雅三院1/通用0
 $(function () {
   //清除需要跳转到登录页的标记
   localStorage.removeItem('toLogin');
+  localStorage.removeItem('accessToken')
+  clearAllCookie()
   if (hideLogo || otherLogo) {
     $(".copy-right").text("");
   }

+ 5 - 0
src/js/modal.js

@@ -5,6 +5,7 @@ const jQuery = require('jquery');
     let suc = require("../images/success.png")
     let def = require("../images/default.png")
     let warn = require("../images/warn.png")
+    let warns = require("../images/warns.png")
     let loadingImg = require("../images/loading.gif")
     $.alerModal = function (options) {
         var dft = {
@@ -81,6 +82,10 @@ const jQuery = require('jquery');
             <div class="modaltipSuc">
                 <img src="${def}" />
                 ${ops.message}
+            </div>`:ops.win=='warn'?`
+            <div class="modaltipSuc">
+                <img src="${warns}" />
+                ${ops.message}
             </div>`:`
             <div class="modaltip">
                 ${ops.message}

File diff suppressed because it is too large
+ 714 - 656
src/js/qcScore.js


+ 2 - 1
src/js/roleManager.js

@@ -112,7 +112,8 @@ $(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||grandParentId==69||grandParentId==72){//循环
+            const parentIdArr = ['3','2','17','18','61','69','72','81','100'];
+            if(parentIdArr.includes(grandParentId)){//循环
                 // console.log(curData[grandIndex])
                 let tmpData = curData[grandIndex];
                 let tmpDataLis = curData[grandIndex].sonMenuDTOList;

+ 82 - 67
src/js/utils.js

@@ -73,6 +73,10 @@ const pageMap = {
   "YH-ZKK-LCZKSYTJ": 'useStatistics.html', //临床质控使用统计
   'YH-KSZR-TMQXGSTJ': 'improveStatisticsDept.html', //条目缺陷改善统计(科室)
   "YH-KSZR-LCZKSYTJ": 'useStatisticsDept.html', //临床质控使用统计(科室)
+
+  "YH-SSXX-SSJL": 'appealHistory.html', //申诉记录
+  "YH-SSXX-SSSH": 'appealCheck.html', //申诉审核
+  "YH-SSXX-SSFQ": 'appealInit.html', //申诉发起列表
 };
 
 //导出时间天数
@@ -142,9 +146,9 @@ window.abortAjax = '';
 
 const post = function (url, data, opts) {
   const token = localStorage.getItem('accessToken');
-  if(localStorage.getItem('toLogin')==='1'&&token){
+  if (localStorage.getItem('toLogin') === '1' && token) {
     //如果前面已经被标记为登录失效,接下来的请求都不发送
-    return new Promise(()=>{});
+    return new Promise(() => { });
   }
   let isPlacefile = getCookie('isPlacefile') || 1;
   if (!token && window.location.href.indexOf('login') == -1) {
@@ -175,64 +179,64 @@ const post = function (url, data, opts) {
       cache: false,
       processData: false,
       data: (opts && opts.needqs) ? qs.stringify(data) : JSON.stringify(Object.assign({}, data, {
-        isPlacefile: (opts && opts.noPlacefile?undefined:isPlacefile)
+        isPlacefile: (opts && opts.noPlacefile ? undefined : isPlacefile)
       })),
       contentType: 'application/json; charset=UTF-8',
       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 : '');
+        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 : '');
         }
       },
       success: function (resq) {
-        const doc = parent?parent.document:document;
+        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'){
+        //失效后不点知道了直接刷新处理:跳回登录页
+        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){
+        const isOut = code === '10020011' || code === '10020012' || code === '10020013';
+        if (isOut) {
           //登录信息失效处理
-		  unloginPop(res.msg);
-        }else{
-		  resolve({
-			data: res
-		  });
+          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)
-              });
+        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;
             }
-          } else if (error.status === 500 || error.status === 501 || error.status === 404) {
             $.alerModal({
-              "message": '接口错误',
+              "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);
       },
     });
@@ -240,39 +244,40 @@ const post = function (url, data, opts) {
 };
 
 //登录失效弹窗处理
-function unloginPop(msg){
+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);
+  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 () {
+        clearAllCookie();
+        (parent || window).location.href = 'login.html'
+      }
+    });
+    //失效后不点知道了直接刷新处理标记
+    localStorage.setItem('toLogin', 1);
+  }
   /*}else{
-	callback()
+  callback()
   }*/
 
 }
@@ -355,6 +360,13 @@ const delCookie = function (name) {
   let cval = getCookie(name);
   if (cval != null) document.cookie = name + '=' + cval + ';expires=' + exp.toGMTString();
 };
+const clearAllCookie = function () {
+  var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
+  if (keys) {
+    for (var i = keys.length; i--;)
+      document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
+  }
+}
 
 //弹窗关闭事件
 $('.modal .close').click(function () {
@@ -370,6 +382,7 @@ function setBoxHeight() {
     $('.content-box').height(ht - 60 + 'px');
   }
   //$('.content-box').height(ht - 60 + 'px');
+  console.log(ht);
   $('.flaw-table').height(ht - 70 + 'px');
   $('.content-ht').height(ht - 120 + 'px');
   $('.scroll-table tbody').css('max-height', ht - 210 + 'px');
@@ -548,6 +561,7 @@ function getPickerDate(picker, mode) {
     return;
   }
   let date = picker.val();
+  console.log(date);
   if (mode == 1) {
     return date + ' 00:00:00';
     // return date.replace(/\//g,'-') + ' 00:00:00'
@@ -718,6 +732,7 @@ module.exports = {
   setCookie,
   getCookie,
   delCookie,
+  clearAllCookie,
   getLocal,
   setLocal,
   setBoxHeight,

+ 2 - 1
webpack.config.js

@@ -120,7 +120,8 @@ module.exports = {
         use: {
           loader: 'babel-loader',
           options: {
-            presets: ['@babel/preset-env']
+           presets: ['@babel/preset-env'],
+           //plugins:["@babel/plugin-transform-runtime"]
           }
         }
       },