Jelajahi Sumber

控制台科室首页完成

luolei 4 tahun lalu
induk
melakukan
769e66769e

+ 360 - 0
src/css/dept/partDetailControl.less

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

+ 5 - 1
src/css/deptConsole.less

@@ -25,7 +25,11 @@ div.console {
  
 
 
-
+  .chuyuan {
+    height: 163px;    
+    border-bottom: 10px solid #142753;
+    box-sizing: border-box;
+  }
   .chuyuanEmpty {
     border-bottom: 10px solid @activeBg;
     height: 162px;

+ 1 - 22
src/html/console.html

@@ -36,28 +36,7 @@
                       <span class="personNum">总人数:</span>
                     </p>
                     <div class="chuyuan" id="chuyuan">
-                      <!-- <ul class="clearfix" style="cursor: default;">
-                        <li class="topLis chuyuannum" data-type="1">
-                          <p class="numShow died"></p>
-                          <p class="explainNum">死亡人数</p>
-                        </li>
-                        <li class="li02 topLis chuyuannum" data-type="2">
-                          <p class="numShow newborn"></p>
-                          <p class="explainNum">新生儿患者</p>
-                        </li>
-                        <li class="li03 topLis chuyuannum" data-type="3">
-                          <p class="numShow patientNum"></p>
-                          <p class="explainNum">手术病人数</p>
-                        </li>
-                        <li class="li04 chuyuannum" data-type="4">
-                          <p class="numShow goAwayNum"></p>
-                          <p class="explainNum">非医嘱离院病人数</p>
-                        </li>
-                        <li class="li04 li04again" data-type="5">
-                          <p class="numShow againNum"></p>
-                          <p class="explainNum">31日再入院病人数</p>
-                        </li>
-                      </ul> -->
+                     
                     </div>
                     <div class="chuyuanEmpty"></div>
                     <div class="defect">

+ 78 - 0
src/html/dept/partDetailControl.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>病案首页合格率占比</title>
+</head>
+
+<body>
+    <div class="container partDetailControl">
+        <div class="partTitle">
+          <p><a href="console.html">控制台 / </a>病案首页合格率占比</p>
+          <!-- <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div>  -->
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <input type="text" class="selectDept canEditDept" value="全部">
+                    <ul class="deptList filterDropList"></ul>
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>合格率:</span>
+                    <span class="selectDept" data-id="">全部</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="全部" data-id="" data-name="全部">全部</li>
+                        <li class="deptItem ellipsis" title="合格" data-id="合格" data-name="合格">合格</li>
+                        <li class="deptItem ellipsis" title="不合格" data-id="不合格" data-name="不合格">不合格</li>
+                    </ul>
+                </span> -->
+                <span class="filterItem typeFilter clearfix dataSelectLight">
+                    <span class="fl">出院日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" readonly/></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" readonly/></span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+                <span class="export">导出</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                        <th class="moduleName" style="width: 65px;">序号</th>
+                        <th class="beHospitalId textCenter" code="deptName">科室</th>
+                        <th class="beHospitalId textCenter" code="entryNum">缺陷总数</th>
+                        <th class="beHospitalId textCenter" code="secondLevelNum">不合格数</th>
+                        <th class="beHospitalId textCenter" code="firstLevelNum">合格数</th>
+                        <th class="beHospitalId textCenter" code="firstLevelPercent">合格率</th>
+                        <th class="beHospitalId textCenter" code="emptyNum">空项数</th>
+                        <th class="beHospitalId textCenter" code="emptyPercent">完整率</th>
+                        <th class="beHospitalId textCenter" code="errorNum">错误数</th>
+                        <th class="beHospitalId textCenter" code="errorPercent">完善率</th>
+                        <th class="beHospitalId textCenter" code="averageValue">质控平均分</th>
+                        <th class="beHospitalId textCenter" code="mrNum">质控病历数</th>
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 16 - 0
src/html/dept/test.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+  <script id="arraystmpl" type="text/x-dot-template">
+    {{~it.array:value:index}}
+        <div>{{= index+1 }}{{= value }}!</div>
+    {{~}}
+  </script>
+</head>
+<body>
+  <div id="headertmpl"></div>
+</body>
+</html>

+ 4 - 17
src/html/deptConsole.html

@@ -37,24 +37,11 @@
         <div class="partWrap clearfix">
             <div class="part01 fl">
               <p class="partTitlePub clearfix" style="cursor: default;">
-                <span class="name">出院人数统计</span>
-                <span class="personNum">总人数:</span>
+                <span class="name"></span>
+                <span class="personNum"></span>
               </p>
-              <div class="chuyuan">
-                <ul class="clearfix" style="cursor: default;">
-                  <li>
-                    <div class="lis">
-                      <p class="numShow died"></p>
-                      <p class="explainNum">死亡人数</p>
-                    </div>
-                  </li>
-                  <li class="li03">
-                    <div class="lis li02">
-                      <p class="numShow patientNum"></p>
-                      <p class="explainNum">手术病人数</p>
-                    </div>
-                  </li>
-                </ul>
+              <div class="chuyuan" id="chuyuan">
+
               </div>
               <div class="chuyuanEmpty"></div>
               <div class="defect">

+ 6 - 5
src/html/index.html

@@ -7,6 +7,7 @@
   <link rel="shortcut icon" href="../resource/favicon.ico" type="image/x-icon">
   <title>AI病案质控平台-首页</title>
 </head>
+
 <script type="text/html" id="menuTmpl">
     {{if subMenuList.length}}
         <li class="list-1 ${code}"><p>${name}</p>
@@ -73,11 +74,11 @@
           <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>
+                <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">

+ 3 - 0
src/js/api.js

@@ -141,6 +141,9 @@ const api = {
 
     exportQcresultByPerson:'/qc/behospitalInfo/exportQcresultByPerson',//个人质控导出  
 
+    beHosCountByDept:'/consoleByDept/beHosCountByDept',//入院记录(科室首页,运行)
+    casesEntryStatisticsByDept:'/consoleByDept/casesEntryStatisticsByDept',//24h(科室首页,运行)
+
 }
 module.exports = {
     api

+ 1 - 1
src/js/console.js

@@ -54,7 +54,7 @@ $(function(){
     // getBarData(2)//图标数据获取
     dateChange()
     $(window).resize(function(){
-        console.log('窗口大小改变');
+        // console.log('窗口大小改变');
         resizeBox()
     })
     $(window).click(function(){

+ 615 - 0
src/js/dept/partDetailControl.js

@@ -0,0 +1,615 @@
+const $ = require('jquery');
+require("../css/dept/partDetailControl.less");
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,getUrlArgObjectNew,emptyBox,setTitleTxt,setDatePicker,getPickerDate,downloadExportedData,expJson,initScroll,listenScroll} = require('./utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+const iconDown= require("../../images/arrow_down.png")
+const iconUp = require("../../images/arrow_up.png")
+const loadingImg = require("../../images/loading.gif")
+const arrowLeft= require("../../images/arrow_left.png")
+const arrowRight = require("../../images/arrow_right.png")
+$(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+listenScroll()
+let isPlacefile = getCookie('isPlacefile')||1
+
+let tabList = [], name = "",deptName="",deptNameTemp="", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,statisticsType="",
+  nameTemp = "", behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNum="",doctorNameTemp="",doctorNumTemp="",
+  data_desc="deptName",data_asc="";
+  let srcUrl = $("#contentIframe",parent.document).attr("src")
+  statisticsType = getUrlArgObjectNew("dateType",srcUrl)||""
+  from = getUrlArgObjectNew("from",srcUrl)||""
+  lineType = getUrlArgObjectNew("lineType",srcUrl)||""
+  let startDateParam = getUrlArgObjectNew("startDateParam",srcUrl)||""
+  let endDateParam = getUrlArgObjectNew("endDateParam",srcUrl)||""
+  data_desc = (lineType == "合格率")?"firstLevelPercent":(lineType=="完整率"?"emptyPercent":"deptName")
+  if(lineType){
+        $("th[code="+data_desc+"]").addClass("desc");
+  }
+  //setTitleTxt('',from)         //导航栏面包屑
+  if(statisticsType == 1){
+      $(".monthYear .mon").css({
+          backgroundColor:'#00A1FF',
+          color:'#fff'
+      }).siblings().css({
+          color:'#00A1FF',
+          backgroundColor:'#fff'
+      })
+      setDatePicker($("#datepicker"),$("#datepicker2"),1)
+  }else if(statisticsType == 2){
+      $(".monthYear .year").css({
+          backgroundColor:'#00A1FF',
+          color:'#fff'
+      }).siblings().css({
+          color:'#00A1FF',
+          backgroundColor:'#fff'
+      })
+      setDatePicker($("#datepicker"),$("#datepicker2"),2)
+  }else if(statisticsType == 3){
+    setDatePicker($("#datepicker"),$("#datepicker2"),3,new Date(startDateParam),new Date(endDateParam))
+  }else{
+    setDatePicker($("#datepicker"),$("#datepicker2"),'default')
+  }
+  if(!statisticsType){
+    setDatePicker($("#datepicker"),$("#datepicker2"),'default')
+  }
+$(".abnormalClear").click(function(){
+    data_desc=""
+    data_asc=""
+    setDatePicker($("#datepicker"),$("#datepicker2"),"default")
+    $(".patientNumInp").val("")
+    $("th[code]").removeClass("desc asc");
+    behospitalCode =behospitalCodeTemp= ""
+    deptName = deptNameTemp = ""
+    level = levelTemp = ""
+    deptId = deptIdTemp = ""
+    $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+    getTabData(1)
+})
+$(".partTitle a").click(function(){
+    //初始菜单选中
+    $(".menu .page",parent.document).removeClass("active").eq(0).addClass("active");
+    $(".container",parent.document).addClass("console-cont");
+})
+
+$('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
+dateChange()
+//所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","block")
+        $(".dayDetail .dayFilter").css("display","none")
+        statisticsType = 1
+        setDatePicker($("#datepicker"),$("#datepicker2"),1)
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        $(".dayDetail .deptListWrap").css("display","none")
+        $(".dayDetail .dayFilter").css("display","block")
+        statisticsType = 2
+        setDatePicker($("#datepicker"),$("#datepicker2"),2)
+        getTabData(1)
+    })
+}
+// YH-ZKK-BASYHGLZB_XQ
+$(".menu .page", parent.document).removeClass("active")
+$(parent.document).find(".menu .page[code=YH-ZKK-BASYHGLZB_XQ]").addClass("active")
+
+//判断有无某一权限
+  function hasData(data){
+    let trdObj = JSON.parse(getCookie("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const dateStatrt = getPickerDate($("#datepicker"),1)
+    const dateEnd = getPickerDate($("#datepicker2"),2)
+    const start = new Date(dateStatrt).getTime()
+    const end = new Date(dateEnd).getTime()
+    if(start > end){
+        $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    }
+    const param = {
+        "level": "",
+        "name": behospitalCode||"",
+        "deptName": deptName=="全部"?"":deptName||"",
+        "asc":data_asc,     //升序
+        "desc":data_desc,       //降序
+        "type": 0, //1-本月,2-本年,0-自定义时间(现在所有都是自定义时间,都会传开始日期和结束日期)
+        "startDate":dateStatrt,
+        "endDate":dateEnd
+    }
+    startDateParam = dateStatrt
+    endDateParam = dateEnd
+    $('.pagination').html("")
+    $('.tbody').html(emptyBox('努力加载中...','',1))
+    post(api.homePageLevelStatistics,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data||[];
+            renderTab(data,data.hospitalId,activePage);
+            renderPagination(totalPage,Number(activePage),totalNum)
+            if(totalPage > 1){
+                renderPagination(totalPage,Number(activePage),totalNum)
+            } else{
+                $('.pagination').html("")
+            }
+        }else{
+            $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        }
+    }).catch((e) =>{
+    
+    })
+}
+
+getTabData(1)
+
+$(".filter").on("click", function(e){
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    deptName = deptNameTemp
+    if(deptName == ""){
+        $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+    }
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td >${item.deptName || "-"}</td>
+                <td class="goHomeDetail" data-ruleType="" data-dept="${item.deptName || ""}">${item.entryNum || "-"}</td>
+                <td class="goHomeDetail1" data-dept="${item.deptName || ""}" data-title="不合格数">${item.secondLevelNum}</td>
+                <td class="goHomeDetail1" data-dept="${item.deptName || ""}" data-title="合格数">${item.firstLevelNum}</td>
+                <td >${item.firstLevelPercentStr || "-"}</td>
+                <td class="goHomeDetail" data-ruleType="1" data-dept="${item.deptName || ""}">${item.emptyNum+'' || "-"}</td>
+                <td >${item.emptyPercentStr+'' || "-"}</td>
+                <td class="goHomeDetail" data-ruleType="2" data-dept="${item.deptName || ""}">${item.errorNum+'' || "-"}</td>
+                <td >${item.errorPercentStr+'' || "-"}</td>
+                <td >${item.averageValue===null?'-':item.averageValue}</td>
+                <td >${item.mrNum+'' || "-"}</td>
+            </tr>
+        `
+    }
+    $('.tbody').html(str?str:emptyBox())
+    bindScoreDetail(hisId)
+    $(".goHomeDetail").click(function(){
+        let index =  $(this).parent().attr("data-index")
+        let deptName = $(this).attr("data-dept")
+        let ruleType = $(this).attr("data-ruleType")
+        let deptId = data[index].deptId   
+        $(parent.document).find("#contentIframe").attr("src","quexianDetailControlHome.html?deptName="+deptName+"&deptId="+deptId+"&from=1&casesId=243"+"&shijian=3"+"&ruleType="+ruleType+"&startDateParam="+startDateParam+"&endDateParam="+endDateParam)
+    })
+    // 不合格数跳转至 病历列表详情页
+    $(".goHomeDetail1").click(function () {
+        let index = $(this).parent().attr("data-index")
+        let deptName = $(this).attr("data-dept")
+        let titleName = $(this).attr("data-title")
+        // let ruleType = $(this).attr("data-ruleType")
+        let deptId = data[index].deptId
+        // $(parent.document).find("#contentIframe").attr("src", "qcListCopy.html?deptName=" + deptName + "&deptId=" + deptId + "&from=4&casesId=243" + "&shijian=3" + "&ruleType=" + ruleType + "&startDate=" + startDateParam + "&endDate=" + endDateParam + "&defectName=" + defectName)
+        $(parent.document).find("#contentIframe").attr("src", "qcListCopyUnqualified.html?deptName=" + deptName + "&deptId=" + deptId + "&from=4&casesId=243" + "&shijian=3" +  "&startDate=" + startDateParam + "&endDate=" + endDateParam+"&titleName="+titleName )
+
+    })
+    // initScroll("partDetailControl","YX",1)
+}
+
+function scoreDetail(id,age,hid,code){
+    window.open(`./qcScore.html?id=${id}&age=${age}&hid=${hid}&code=${code}`)
+}
+function bindScoreDetail(hisId){
+    $('.patientNameSpan').on('click',function(e){
+        const index = $(this).attr("data-index")
+        const type = $(this).attr("data-type")
+        const item = tabList[index]
+        midifyMsgBox(item,type)
+    })
+}
+
+  
+function midifyMsgBox(item,type){
+    const itemCopy = JSON.parse(JSON.stringify(item))
+    let msgBox = ''
+    if(type == 1){
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent abnormal">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft">状态:</span> 
+                    <span class="abnormalAll" data-status="${itemCopy.status}">${itemCopy.status == 0?"未处理":"已处理"}</span>
+                    <ul class="abnormalStatusLis">
+                        <li data-status="0">未处理</li>
+                        <li data-status="1">已处理</li>
+                    </ul>
+                </div>
+                <div class="itemMsgInfoBox">
+                    <span class="itemMsgLab abnormalLeft abnormalMark">备注:</span> 
+                    <span class="itemInfoRight"> 
+                        <textarea class="abnormalTxt" placeholder="请输入内容" >${itemCopy.remark}</textarea>
+                    </span>
+                </div>
+                <div  class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</div>
+                <div class="midifyMsgBtn abnormalBtn">
+                    <span class="midifyEdit">保存</span>
+                </div>
+            </div>
+        </div>`
+    }else{
+        msgBox = `<div class="midifyMsgBox">
+            <div class="mask"></div>
+            <div class="midifyMsgContent midifyMsgContentDel">
+                <p class="midifyMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <p class="delTips">确认要删除该条异常记录?</p>
+                <div class="midifyMsgBtn midifyMsgBtnDel">
+                    <span class="midifyEdit midifyEditDel">删除</span>
+                    <span class="midifyEdit midifyEditQuit">取消</span>
+                </div>
+            </div>
+        </div>`
+    }
+    $("#mainBox", parent.document).append(msgBox)
+    $(".midifyEditDel", parent.document).on("click",function(){
+        delModifyOne(itemCopy)
+    })
+    $(".midifyEditQuit", parent.document).on("click",function(){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $(".abnormalAll", parent.document).on("click",function(){
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $(".abnormalStatusLis li", parent.document).on("click",function(){
+        let status = $(this).attr("data-status")
+        let str = $(this).html()
+        $(".abnormalAll", parent.document).attr("data-status",status).html(str)
+        $(".abnormalStatusLis", parent.document).slideToggle()
+    })
+    $("#mainBox .midifyMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .midifyMsgBox", parent.document).remove()
+    })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("keypress", function(event){
+        return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))
+     })
+    $("#mainBox .midifyMsgBox .itemScore", parent.document).on("input", function(e){
+       const val = $(this).val() 
+       itemCopy.score = val
+    })
+    $("#mainBox .midifyMsgBox .midifyEdit", parent.document).on("click", function(e){
+        saveModifyOne(itemCopy)
+    })
+}
+//保存修改
+function delModifyOne(itemCopy){
+    let param = {
+        "id": itemCopy.id
+    }
+    post(api.delQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'删除成功',type:"tip",time:'1000',isFather: true,win: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            $.alerModal({"message":'删除失败,请重试~',type:"tip",time:'1000',win:'default',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+            
+        }
+    }).catch((e) =>{
+        $.alerModal({"message":'删除失败,请重试~',type:"tip",time:'1000',win:'default',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+    
+    })
+}
+//保存修改
+function saveModifyOne(itemCopy){
+    let txt = $(".abnormalTxt", parent.document).val()
+    let status = $(".abnormalAll", parent.document).attr("data-status")
+    let param = {
+        "id": itemCopy.id,
+        "remark": txt,
+        "status": status
+    }
+    post(api.saveQcAnnormal,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data;
+            getTabData(1)
+            $("#mainBox .midifyMsgBox", parent.document).remove()
+            $.alerModal({"message":'修改成功',type:"tip",time:'1000',isFather: true,win: true, fatherWrapper: $("#mainBox", parent.document)});
+        }else{
+            $.alerModal({"message":'修改失败,请重试~',type:"tip",time:'1000',isFather: true,win: 'default', fatherWrapper: $("#mainBox", parent.document)});
+            
+        }
+    }).catch((e) =>{
+        $.alerModal({"message":'修改失败,请重试~',type:"tip",time:'1000',isFather: true,win: 'default', fatherWrapper: $("#mainBox", parent.document)});
+    
+    })
+}
+//选择病历等级
+$('.selectLevel').on("click", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+    const showList =  $(".levelList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".levelList ").css("display","block")
+        $(".selectLevel .arrow").attr("src",iconUp)
+    }else{
+        $(".levelList ").css("display", "none")
+        $(".selectLevel .arrow").attr("src",iconDown)
+    }
+})
+
+bindLeveldSelect()
+//是否启用选择
+function bindLeveldSelect(){
+    $('.levelItem').on("click",function(){
+        const levelItemName = $(this).attr("data-name")
+        const levelItemItemId = $(this).attr("data-id")
+        levelTemp =levelItemItemId
+        $('.selectLevel').html(levelItemName)
+        $(".levelList").css("display", "none")
+        $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+//全选绑定
+
+$('.selectDept').on("focus", function(e){
+    e.stopPropagation()
+    $(".deptList ").css("display","block")
+})
+$('.selectDept').on("blur", function(e){
+    $(".deptList ").css("display", "none")
+    $(".selectDept .arrow").attr("src",iconDown)
+  })
+  $('.selectDept').on("input", function(e){
+    let val = $(this).val().trim()
+    deptName = deptNameTemp = val
+    getDeptList(deptName)
+  })
+//获取科室列表
+getDeptList()
+function getDeptList(val){
+    post(api.getDeptList,{inputStr:val=="全部"?"":val||""}).then(res =>{
+        if(res.data.code == '0'){
+           const deptList = res.data.data||[]
+           rendeDeptList(deptList)
+        }else{
+            rendeDeptList([])
+        }
+    }).catch((e) =>{
+
+    })
+}
+
+function rendeDeptList(deptList){
+    if(deptList.length == 0){
+      $('.deptList').html("")
+      return
+    }
+    let str = `<li class="deptItem " data-id="" data-name="全部">全部</li>`
+    for(let i = 0; i < deptList.length; i++){
+        str += `<li class="deptItem ellipsis" title=${deptList[i].deptName} data-id=${deptList[i].deptId} data-name=${deptList[i].deptName}> ${deptList[i].deptName}</li>`
+    }
+    $('.deptList').html(str)
+    bindDeptSelect()
+}
+//科室选择
+function bindDeptSelect(){
+    $('.deptItem').on("mousedown",function(){
+        const deptItemName = $(this).attr("data-name")
+        const deptItemId = $(this).attr("data-id")
+        deptNameTemp=deptItemName=="全部"?"":deptItemName;
+        deptIdTemp =deptItemId
+        $('.selectDept').val(deptItemName)
+        $('.selectDept ').attr('title',deptItemName)
+        $(".deptList").css("display", "none")
+    })
+}
+function loading(){
+    const str = `
+    <div class="loadingBox">
+            <div class="mask"></div>
+            <img class="loadingImg" src=${loadingImg}  alt="loading" />
+        </div>
+    `
+    $("#mainBox", parent.document).append(str)
+}
+function hideLoading(){
+    $("#mainBox .loadingBox", parent.document).remove()
+}
+$('.recordScoreBtn').on("click",function(e){
+    if(!hasData('FUNC000017')){
+        return
+    }
+    let scoreList = []
+    for(let i = 0; i <tabList.length; i++){
+        if(tabList[i].hasSelect){
+            scoreList.push(tabList[i].behospitalCode)
+        }
+    }
+    if(scoreList.length === 0){
+        $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+    } else{
+        loading()
+        for(let j = 0; j < scoreList.length; j++){
+            recordScore(scoreList[j],scoreList.length)
+        }
+    }
+})
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc==code){
+      data_desc=code;
+      data_asc="";
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc="";
+      data_asc=code;
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+});
+function recordScore(behospitalCode,totalNum){
+    const param = {
+        behospitalCode: behospitalCode
+    }
+    post(api.recordScore,param).then(res =>{
+        if(res.data.code == '0'){
+            scoreSum++
+            if(scoreSum === totalNum){
+                hideLoading()
+                scoreSum = 0
+                const activePage = $(".activePage").attr('data-page') || 1
+
+                getTabData(activePage)
+            }
+      
+        }else{}
+    }).catch((e) =>{
+    
+    })
+}
+$(".patientNumInp").on("input", function(e){
+    const val = $(this).val().trim()
+    behospitalCodeTemp = val
+})
+$(".patientNameInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".doctorInp").on("input", function(e){
+    const val = $(this).val().trim()
+    doctorNameTemp = val
+})
+$(".doctorNumInp").on("input", function(e){
+  const val = $(this).val().trim();
+    doctorNumTemp = val
+})
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+          
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+
+$(function() {
+    const  iconCalenBlue= require("./../images/icon_calen_blue.png")
+    const  iconCalenGrey= require("./../images/icon_calen_grey.png")
+    $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
+    $('.iconCalen').on("mouseenter", function(e){
+        $(this).attr("src", iconCalenBlue)
+    })
+    $('.iconCalen').on("mouseleave", function(e){
+        $(this).attr("src", iconCalenGrey)
+    })
+    $('.iconCalen').on("click", function(e){
+        $(this).parent().find("input").focus()
+    })
+    $('.export').click(function(){
+        const start = new Date(startDateParam).getTime()
+        const end = new Date(endDateParam).getTime()
+        if(start > end){
+        $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+        return
+        }
+        const param = {
+        "isPlacefile":isPlacefile,
+        "level": "",
+        "name": behospitalCode||"",
+        "deptName": deptName=="全部"?"":deptName||"",
+        "asc":data_asc,     //升序
+        "desc":data_desc,       //降序
+        "type": statisticsType||2, //1-本月,2-本年
+        "startDate":startDateParam,
+        "endDate":endDateParam
+        }
+        expJson(api.exportIndexQualified,param).then(res =>{
+        downloadExportedData(res.data,"病案首页合格率占比.xls")
+        })
+    })
+});

+ 7 - 0
src/js/dept/test.js

@@ -0,0 +1,7 @@
+const $ = require('jquery');
+
+const doT = require('../../resource/dot.js');
+var dataArr = {"array":["banana","apple","orange"]};
+var arrText = doT.template($("#arraystmpl").text());
+
+$("#headertmpl").html(arrText(dataArr));

+ 171 - 19
src/js/deptConsole.js

@@ -8,10 +8,12 @@ require('./modal.js');
 // import 'zrender/lib/svg/svg';
 const {api} = require('./api.js')
 const echarts = require('echarts');
+
 require('./../resource/jquery-ui/jquery-ui.min.js');
 require('./../resource/jquery-ui/jquery-ui.min.css');
 const {post,setCookie,delCookie,getCookie,focusMenuItem,picEmptyData,initScroll,listenScroll } = require('../js/utils.js');
-let payMoney = [],behosDateStart="",behosDateEnd="",ownSelectDate='',dayLis = [],dateType = 2,curDept = '',curDeptId='',datafst=[],datasec=[],datatrd=[],datafour=[],hospital=getCookie("hospital");
+let payMoney = [],behosDateStart="",behosDateEnd="",ownSelectDate='',dayLis = [],dateType = 2,curDept = '',curDeptId='',datafst=[],datasec=[],datatrd=[],datafour=[],dataFif=[],dataSix=[],hospital=getCookie("hospital");
+let isPlacefile = getCookie('isPlacefile')||1
 $(function(){
     listenScroll(".deptConsole")
     if(!hasData('YH-KZT')&&!hasData('YH-KZTKS')){
@@ -81,7 +83,6 @@ function tiaomu(dateType){
 //判断有无某一权限
 function hasData(data){
     let lis = JSON.parse(getCookie("codeLis"))||[]
-    // console.log(lis)
     if(lis.indexOf(data)>-1){//有权限
         return true
     }
@@ -197,10 +198,16 @@ function renderDeptLis(data){
         curDeptId = did
         $(this).parent().slideToggle().prev().find("span").html(name).attr({"title":name,'data-dept':curDept,'dept-id':curDeptId})
         $(".partTitle p i").html(name).attr({"title":name,'data-dept':curDept,'dept-id':curDeptId})
-        personNum(datafst[name]||[])
+        if(isPlacefile == 0){
+            enterHospital(dataFif[name]||[])
+            lineChartSpecial()
+        }else{
+            personNum(datafst[name]||[])
+        }
         setNumDetail(datasec[name]||[])
         queList(datatrd[name]||[])
         getHomePageLevelStatisticsByDept()
+        
         for(let i = 0;i < datafour[name].length;i++){
             datafour[name][i].value = datafour[name][i].num
         }
@@ -216,7 +223,7 @@ function renderDeptLis(data){
 }
 //获取图表数据
 function getBarData(type){
-    if(hasData('FUNC000054')){
+    if(hasData('FUNC000054')&&isPlacefile == 1){
         post(api.leaveHosCountByDept,{//出院人数统计
             "type": type||1,//1月2年
             "startDate":behosDateStart,
@@ -230,6 +237,22 @@ function getBarData(type){
             }
         })
     }
+    if(isPlacefile == 0) {//运行入院人数
+        post(api.beHosCountByDept,{
+            "type": type||1,//1月2年
+            "startDate":behosDateStart,
+            "deptName": curDept,
+            "deptClass": curDeptId,
+            "endDate":behosDateEnd
+        }).then((res)=>{
+            let data = res.data;
+            if(data.code == 0){
+                let result = data.data[curDept]||[]
+                dataFif = data.data
+                enterHospital(result)
+            }
+        })
+    }
     if(hasData('FUNC000055')){
         post(api.mrCountByDept,{//质控病历统计
             "type": type||1,//1月2年
@@ -299,26 +322,28 @@ function getBarData(type){
 }
 function getHomePageLevelStatisticsByDept(type){
     if(hospital=="长兴医院"&&hasData("FUNC000076")){
-        post(api.homePageLevelStatisticsByDept,{//病案首页
+        post(isPlacefile==0?api.casesEntryStatisticsByDept: api.homePageLevelStatisticsByDept,{//病案首页
             "type": dateType||2,//1月2年
             "deptName":curDept,
+            "deptClass":curDeptId,
             "startDate":behosDateStart,
             "endDate":behosDateEnd
         }).then((res)=>{
             let data = res.data;
             if(data.code == 0){
-                let result1 = data.data||[]
-                let dataX1=[],dataY1=[]
-                for(let i = 0;i < result1.length;i++){
-                    dataX1.push(result1[i].doctorName)
-                    dataY1.push(result1[i].firstLevelPercentStr.replace('%',''))
-                }
-                lineChartSpecial(dataX1,dataY1)
+                let result1 = isPlacefile==0?data.data[curDept]||[]: data.data||[]
+                dataSix = data.data
+                lineChartSpecial(result1)
             }
         })
     }
 }
-function lineChartSpecial(dataX,dataY){
+function lineChartSpecial(result1){
+    let dataX=[],dataY=[]
+    for(let i = 0;i < result1.length;i++){
+        dataX.push(result1[i].doctorName)
+        dataY.push(isPlacefile==0?result1[i].num: result1[i].firstLevelPercentStr.replace('%',''))
+    }
     if(dataX.length==0&&dataY.length==0){
         $(".emptyLineCircle").css("display","none")
         picEmptyData('.emptyLineCircleEmpty')
@@ -328,7 +353,6 @@ function lineChartSpecial(dataX,dataY){
         $(".emptyLineCircleEmpty").css("display","none")
     }
     var myCharts = echarts.init(document.getElementById('lineChart'));
-    var lengthNum = dataX.length;
     $(window).resize(function(){
         myCharts.resize()
     });
@@ -421,6 +445,121 @@ function lineChartSpecial(dataX,dataY){
     };
     myCharts.setOption(option);
 }
+//入院人数统计
+function enterHospital(result){
+    let dataX=[],dataY=[]
+    for(let i = 0;i < result.length;i++){
+        dataX.push(result[i].doctorName)
+        dataY.push(result[i].num)
+    }
+    $(".part01 .name").html('入院人数统计')
+    if(dataX.length==0){
+        $(".chuyuan,.personNum").css("display","none")
+        picEmptyData(".chuyuanEmpty")
+        return
+    }else{
+        $(".personNum").html("总人数:"+(dataY[0]||'--'))
+        $(".chuyuanEmpty").css("display","none")
+        $(".chuyuan,.personNum").css("display","block")
+    }
+
+    var myCharts = echarts.init(document.getElementById("chuyuan"));
+    $(window).resize(function(){
+        myCharts.resize()
+    });
+    option = {
+        color: ['#37CBCB'],
+        tooltip: {
+            trigger: 'axis',
+            position: 'right',
+            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
+                type: 'line'        // 默认为直线,可选为:'line' | 'shadow'
+            },
+            formatter: function(param) {
+                return '<div style="color:#fff;">'+ param[0].name + "<br>" +'<i style="background:#37C4FC;margin-right:5px;display:inline-block;width:8px;height:8px;border-radius:50%"></i>'+("入院人数:")+ param[0].value+ "<br>"
+                '</div>'
+            }
+        },
+        grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            top:'25',
+            containLabel: true
+        },
+        xAxis: [
+            {
+                type: 'category',
+                data: dataX,
+                axisTick: {
+                    alignWithLabel: true
+                },
+                axisLabel: {//x轴刻度
+                    textStyle: {
+                        color: '#E9EBEF'
+                    },
+                    rotate:45,
+                    formatter: function (value) {//x轴的文字改为竖版显示
+                        if(value.length>7){
+                            return value.slice(0,7)+'...'
+                        }
+                        return value;
+                     }
+                },
+                axisLine: {//x轴
+                    lineStyle:{
+                        color:'#4A5D8E'
+                    }
+                }
+            }
+        ],
+        yAxis: [
+            {
+                type: 'value',
+                axisLine: {//y轴
+                    show: false
+                },
+                axisTick: {
+                    show: false
+                },
+                splitNumber : 3,
+                axisLabel: {//y轴刻度
+                    textStyle: {
+                        color: '#E9EBEF'
+                    },
+                    formatter: function (value) {
+                        return value;
+                     }
+                },
+                splitLine:{//分割线
+                    lineStyle:{
+                        color:'#344876'
+                    }
+                }
+            }
+            
+        ],
+        title:[{
+            text: '数量',
+            top: 0,
+            left: 10,
+            textStyle: {
+                fontSize: 14,
+                color:'#E9EBEF',
+                fontWeight: 400
+            }
+        }],
+        series: [
+            {
+                name: '病案首页合格率',
+                type: 'bar',
+                barWidth: '23%',
+                data: dataY
+            }
+        ]
+    };
+    myCharts.setOption(option);
+}
 //part01
 function personNum(data){
     if(data['总人数']==0){
@@ -431,14 +570,28 @@ function personNum(data){
         $(".chuyuanEmpty").css("display","none")
         $(".chuyuan,.personNum").css("display","block")
     }
+    let str = `
+        <ul class="clearfix" style="cursor: default;">
+            <li>
+            <div class="lis">
+                <p class="numShow died">${data['死亡人数']||'--'}</p>
+                <p class="explainNum">死亡人数</p>
+            </div>
+            </li>
+            <li class="li03">
+            <div class="lis li02">
+                <p class="numShow patientNum">${data['手术病人数']||'--'}</p>
+                <p class="explainNum">手术病人数</p>
+            </div>
+            </li>
+        </ul>
+    `
     $(".personNum").html("总人数:"+(data['总人数']||'--'))
-    $(".died").html(data['死亡人数']||'--')
-    $(".newborn").html(data['新生儿人数']||'--')
-    $(".patientNum").html(data['手术病人数']||'--')
+    $(".part01 .name").html('出院人数统计')
+    $(".chuyuan").html(str)
 }
 //part02
 function setNumDetail(data){
-    // console.log(data,2222222222)
     if(data.length == 0){
         $(".pingfendengji").css("display","block")
         $(".bldjs").css("display","none")
@@ -483,7 +636,6 @@ function setNumDetail(data){
 }
 //part02pan
 function part02pan(data,dom){
-    // console.log(data,33333)
     dom = echarts.init(document.getElementById(dom));
     $(window).resize(function(){
         dom.resize()

+ 1 - 0
src/js/index.js

@@ -3,6 +3,7 @@ const $ = require('jquery');
 require('jquery-templates');
 const md5 = require('js-md5');
 require("./modal.js")
+
 const {api} = require('./api.js')
 const {post,pageMap,delCookie,setCookie,getCookie,focusMenuItem,initScroll} = require('./utils.js');
 let userInfo={};

+ 144 - 0
src/resource/dot.js

@@ -0,0 +1,144 @@
+// doT.js
+// 2011-2014, Laura Doktorova, https://github.com/olado/doT
+// Licensed under the MIT license.
+
+(function () {
+	"use strict";
+
+	var doT = {
+		name: "doT",
+		version: "1.1.1",
+		templateSettings: {
+			evaluate:    /\{\{([\s\S]+?(\}?)+)\}\}/g,
+			interpolate: /\{\{=([\s\S]+?)\}\}/g,
+			encode:      /\{\{!([\s\S]+?)\}\}/g,
+			use:         /\{\{#([\s\S]+?)\}\}/g,
+			useParams:   /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
+			define:      /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
+			defineParams:/^\s*([\w$]+):([\s\S]+)/,
+			conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
+			iterate:     /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
+			varname:	"it",
+			strip:		true,
+			append:		true,
+			selfcontained: false,
+			doNotSkipEncoded: false
+		},
+		template: undefined, //fn, compile template
+		compile:  undefined, //fn, for express
+		log: true
+	}, _globals;
+
+	doT.encodeHTMLSource = function(doNotSkipEncoded) {
+		var encodeHTMLRules = { "&": "&#38;", "<": "&#60;", ">": "&#62;", '"': "&#34;", "'": "&#39;", "/": "&#47;" },
+			matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g;
+		return function(code) {
+			return code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : "";
+		};
+	};
+
+	_globals = (function(){ return this || (0,eval)("this"); }());
+
+	/* istanbul ignore else */
+	if (typeof module !== "undefined" && module.exports) {
+		module.exports = doT;
+	} else if (typeof define === "function" && define.amd) {
+		define(function(){return doT;});
+	} else {
+		_globals.doT = doT;
+	}
+
+	var startend = {
+		append: { start: "'+(",      end: ")+'",      startencode: "'+encodeHTML(" },
+		split:  { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML(" }
+	}, skip = /$^/;
+
+	function resolveDefs(c, block, def) {
+		return ((typeof block === "string") ? block : block.toString())
+		.replace(c.define || skip, function(m, code, assign, value) {
+			if (code.indexOf("def.") === 0) {
+				code = code.substring(4);
+			}
+			if (!(code in def)) {
+				if (assign === ":") {
+					if (c.defineParams) value.replace(c.defineParams, function(m, param, v) {
+						def[code] = {arg: param, text: v};
+					});
+					if (!(code in def)) def[code]= value;
+				} else {
+					new Function("def", "def['"+code+"']=" + value)(def);
+				}
+			}
+			return "";
+		})
+		.replace(c.use || skip, function(m, code) {
+			if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) {
+				if (def[d] && def[d].arg && param) {
+					var rw = (d+":"+param).replace(/'|\\/g, "_");
+					def.__exp = def.__exp || {};
+					def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
+					return s + "def.__exp['"+rw+"']";
+				}
+			});
+			var v = new Function("def", "return " + code)(def);
+			return v ? resolveDefs(c, v, def) : v;
+		});
+	}
+
+	function unescape(code) {
+		return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, " ");
+	}
+
+	doT.template = function(tmpl, c, def) {
+		c = c || doT.templateSettings;
+		var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv,
+			str  = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
+
+		str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ")
+					.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""): str)
+			.replace(/'|\\/g, "\\$&")
+			.replace(c.interpolate || skip, function(m, code) {
+				return cse.start + unescape(code) + cse.end;
+			})
+			.replace(c.encode || skip, function(m, code) {
+				needhtmlencode = true;
+				return cse.startencode + unescape(code) + cse.end;
+			})
+			.replace(c.conditional || skip, function(m, elsecase, code) {
+				return elsecase ?
+					(code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") :
+					(code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
+			})
+			.replace(c.iterate || skip, function(m, iterate, vname, iname) {
+				if (!iterate) return "';} } out+='";
+				sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);
+				return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"
+					+vname+"=arr"+sid+"["+indv+"+=1];out+='";
+			})
+			.replace(c.evaluate || skip, function(m, code) {
+				return "';" + unescape(code) + "out+='";
+			})
+			+ "';return out;")
+			.replace(/\n/g, "\\n").replace(/\t/g, '\\t').replace(/\r/g, "\\r")
+			.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, "");
+			//.replace(/(\s|;|\}|^|\{)out\+=''\+/g,'$1out+=');
+
+		if (needhtmlencode) {
+			if (!c.selfcontained && _globals && !_globals._encodeHTML) _globals._encodeHTML = doT.encodeHTMLSource(c.doNotSkipEncoded);
+			str = "var encodeHTML = typeof _encodeHTML !== 'undefined' ? _encodeHTML : ("
+				+ doT.encodeHTMLSource.toString() + "(" + (c.doNotSkipEncoded || '') + "));"
+				+ str;
+		}
+		try {
+			return new Function(c.varname, str);
+		} catch (e) {
+			/* istanbul ignore else */
+			if (typeof console !== "undefined") console.log("Could not create a template function: " + str);
+			throw e;
+		}
+	};
+
+	doT.compile = function(tmpl, def) {
+		return doT.template(tmpl, null, def);
+	};
+}());

+ 29 - 1
webpack.config.js

@@ -62,6 +62,8 @@ module.exports = {
     assist:path.resolve(__dirname, 'src/js', 'assist.js'),
     error:path.resolve(__dirname, 'src/js', 'error.js'),
     nursing:path.resolve(__dirname, 'src/js', 'nursing.js'),
+    test:path.resolve(__dirname, 'src/js/dept', 'test.js'),
+    partDetailControlDept:path.resolve(__dirname, 'src/js/dept', 'partDetailControl.js'),
     vendor: 'lodash',  //多个页面所需的公共库文件,防止重复打包带入
   },
   output: {
@@ -74,11 +76,37 @@ module.exports = {
     alias: {} //配置别名可以加快webpack查找模块的速度
   },
   plugins: [//多入口的html文件用chunks这个参数来区分
+    new HtmlWebpackPlugin({
+      title: 'test',
+      template: path.resolve(__dirname, 'src/html/dept', 'test.html'),
+      filename: 'test.html',
+      chunks: ['test', 'vendor', 'common','src/resouce/dot.js'],
+      hash: true, //防止缓存
+      inject: true,
+      minify: {
+        removeAttributeQuotes: true, //压缩 去掉引号
+        removeComments: true, //移除HTML中的注释
+        collapseWhitespace: true //删除空白符与换行符
+      }
+    }),
     new HtmlWebpackPlugin({
       title: 'index',
       template: path.resolve(__dirname, 'src/html', 'index.html'),
       filename: 'index.html',
-      chunks: ['index', 'vendor', 'common','scrollBar'],
+      chunks: ['index', 'vendor', 'common','scrollBar','src/resouce/dot.js'],
+      hash: true, //防止缓存
+      inject: true,
+      minify: {
+        removeAttributeQuotes: true, //压缩 去掉引号
+        removeComments: true, //移除HTML中的注释
+        collapseWhitespace: true //删除空白符与换行符
+      }
+    }),
+    new HtmlWebpackPlugin({
+      title: 'partDetailControl',
+      template: path.resolve(__dirname, 'src/html', 'partDetailControl.html'),
+      filename: 'partDetailControl.html',
+      chunks: ['partDetailControlDept', 'vendor', 'common'],
       hash: true, //防止缓存
       inject: true,
       minify: {