Explorar o código

新增 数据分析->质控统计

xueqin %!s(int64=3) %!d(string=hai) anos
pai
achega
5b08802939

+ 1 - 0
package.json

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

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

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

+ 79 - 0
src/html/dataAnalysis/useStatistics.html

@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>病案首页合格率占比</title>
+</head>
+
+<body>
+    <div class="container partDetailControl">
+        <div class="partTitle">
+          <p>临床质控使用统计</p>
+          <!-- <div class="monthYear">
+            <span class="mon">本月</span>
+            <span class="year">本年</span>
+          </div>  -->
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="main-body">
+            <div class="filterBox clearfix">
+                <span class="filterItem typeFilter">
+                    <span>科室:</span>
+                    <input type="text" class="selectDept canEditDept" value="全部">
+                    <ul class="deptList filterDropList"></ul>
+                </span>
+                <!-- <span class="filterItem typeFilter deptListWrap">
+                    <span>合格率:</span>
+                    <span class="selectDept" data-id="">全部</span>
+                    <ul class="deptList filterDropList">
+                        <li class="deptItem ellipsis" title="全部" data-id="" data-name="全部">全部</li>
+                        <li class="deptItem ellipsis" title="合格" data-id="合格" data-name="合格">合格</li>
+                        <li class="deptItem ellipsis" title="不合格" data-id="不合格" data-name="不合格">不合格</li>
+                    </ul>
+                </span> -->
+                <span class="filterItem typeFilter clearfix dataSelectLight">
+                    <span class="fl">选择日期:</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker" autocomplete="off" readonly/></span>
+                    <span  class="divide fl">-</span>
+                    <span class="datapickerBox fl"><input type="text" placeholder="请选择时间" id="datepicker2"  autocomplete="off" readonly/></span>
+                </span>
+                <span class="filter">查询</span>
+                <span class="filterclear abnormalClear">重置</span>
+                <span class="export">导出</span>
+            </div>
+            <div>
+                <table>
+                    <thead>
+                        <th class="moduleName" style="width: 65px;">序号</th>
+                        <th class="beHospitalId textCenter" 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="totality">使用AI质控次数</th>
+
+                    </thead>
+                    <tbody class="tbody">
+
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="pagination"></div>
+        </div>
+        
+    </div>
+</body>
+
+</html>

+ 3 - 0
src/html/index.html

@@ -96,6 +96,7 @@
                   <div class="title fl">
                       <!--<img src="../images/logo.png" alt="logo" />-->
                       <span class="subtitle">AI病案质控平台</span>
+                    
                       <span class="qiehuan"><img src="../images/qiehuan2.png" alt=""><i>切换运行质控</i></span>
                   </div>
                   <div class="login fr">
@@ -110,6 +111,8 @@
                   </div>
               </div>
               <iframe src="" frameborder="0" id="contentIframe"></iframe>
+             
+
           </div>
       </div>
     </div>

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

@@ -0,0 +1,616 @@
+require('../mock')
+const $ = require('jquery');
+// require("../css/partDetailControl.less");
+require("../../css/dataAnalysis/useStatistics.less");
+
+require('../modal.js');
+const {api} = require('../api.js')
+const {post,getCookie,getLocal,getUrlArgObjectNew,emptyBox,setTitleTxt,setDatePicker,getPickerDate,downloadExportedData,expJson,initScroll,listenScroll} = require('../utils.js')
+require('../../resource/jquery-ui/jquery-ui.min.js');
+require('../../resource/jquery-ui/jquery-ui.min.css');
+const iconCheck= require("../../images/icon_check.png")
+const iconUnCheck = require("../../images/icon_unchecked.png")
+const iconDown= require("../../images/arrow_down.png")
+const iconUp = require("../../images/arrow_up.png")
+const loadingImg = require("../../images/loading.gif")
+// const arrowLeft= require("./../images/arrow_left.png")
+const arrowLeft= require("../../images/arrow_left.png")
+
+// $.ajax({
+//     url: 'test/test1',
+//     type: 'GET',
+//     dataType: 'json',
+//     success: data=> {
+//         console.log(3333, data)
+//     }
+// })
+
+const arrowRight = require("../../images/arrow_right.png");
+const { get } = require('jquery');
+$(".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)
+    getDeptList()
+})
+$(".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(getLocal("trdObj"))
+    let lis = trdObj['YH-BLZK-ZKPF']
+    if(!lis){
+      return false
+    }
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+}
+function getTabData(activePage){
+    const 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)});
+        console.log('开始时间',dateStatrt)
+        return
+    }
+    const param = {
+        "level": "",
+        "name": behospitalCode||"",
+        "deptName": deptName=="全部"?"":deptName||"", //科室名称
+        "asc":data_asc,     //升序 返回的是升序降序的依据
+        "desc":data_desc,       //降序
+        "type": 0, //1-本月,2-本年,0-自定义时间(现在所有都是自定义时间,都会传开始日期和结束日期)
+        "startDate":dateStatrt,
+        "endDate":dateEnd
+    }
+    console.log('我是param',param)
+    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||[];
+            console.log('我是res',res)
+            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){
+    console.log('我是查询')
+    name = nameTemp
+    behospitalCode = behospitalCodeTemp
+    level = levelTemp
+    deptId = deptIdTemp
+    deptName = deptNameTemp
+    if(deptName == ""){
+        $(".selectDept").attr({'title':"全部",'data-id':''}).val("全部")
+        console.log('我是查询222')
+        console.log(name)
+        console.log(behospitalCode)
+        console.log(level)
+        console.log(deptId)
+        console.log(deptName)
+        console.log(deptName)
+    }
+    console.log('我是查询111')
+    getTabData(1)
+})
+function renderTab(data,hisId,activePage){
+    let str = ``
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr  data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td >${item.deptName || "-"}</td>
+              
+                <td >${item.totality+'' || "-"}</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 ? data[index].deptId : '' 
+        $(parent.document).find("#contentIframe").attr("src", "quexianDetailControlHome.html?deptName=" + deptName + "&deptId=" + deptId + "&from=4&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 ? 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)});
+    
+    })
+}
+
+
+
+
+//全选绑定
+
+$('.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
+        }
+        console.log('我是导出',param)
+        expJson(api.exportIndexQualified,param).then(res =>{
+            console.log(res)
+        downloadExportedData(res.data,"病案首页合格率占比.xls")
+        })
+    })
+});

+ 6 - 2
src/js/index.js

@@ -19,7 +19,7 @@ let passwordComplexity = getCookie('passwordComplexity')
 const hideLogo = getUrlArgObject("hideLg");
 const otherLogo = getUrlArgObject("adLg");
 const is3His = getUrlArgObject('is3His')
-console.log(is3His);
+console.log('我是is3His',is3His);
 const modalDom = `
       <p class="tips"><img src=${WarningIcon} /><span>为确保账号安全,请及时修改初始密码</span></p>
       <div class="modalAction">
@@ -308,6 +308,7 @@ function userActionHide(e){
 window.userActionHide = userActionHide
 
 function initMenu(data,userInfo){
+  console.log('===========',data,userInfo)
   //菜单数据填充
   $(".menu ul").html("");
   $(".menu-mini ul").html("");
@@ -357,6 +358,8 @@ $(".slide-hide").off("click").click(function(){
   $(".page").on("click",function(){
     $(".menu .active,.menu-mini .active").removeClass('active');
     const code=$(this).attr("code");
+    // const code2=$(this).attr("code2");
+    console.log('我是this',this)
     if(code === 'YH-KZT'||code === 'YH-KZTKS'){
       // if(code === 'YH-KZT'){
       $(".container").addClass("console-cont");
@@ -398,6 +401,7 @@ function getMenu(){
   // console.log(api.getMenu)
   isPlacefile = getCookie('isPlacefile')||1
   post(api.getMenu).then(function(res){
+    console.log('我是getmenu函数的res',res)
     if(res.data.code==='0'){
       const data = res.data.data;
       for(let i = 0;i<data.menuWrappers.length;i++){
@@ -451,7 +455,7 @@ function getAllCode(data){
   }else if(hasData('YH-KZTKS',lis)){
     focusMenuItem("YH-KZTKS");
   }
-  console.log(trdObj)
+  console.log('我是初始选中菜单',trdObj)
   setCookie("codeLis",JSON.stringify(lis))
   setLocal("trdObj",JSON.stringify(trdObj))
 }

+ 7 - 0
src/js/keyItemFlawControl.js

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

+ 14 - 0
src/js/mock.js

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

+ 4 - 1
src/js/mukuaiControl.js

@@ -177,6 +177,7 @@ function dateChange(){
 $("th[code]").on("click",function(e){
     const code=$(this).attr("code");
     if(data_asc[0]===code){
+        console.log('我是data_asc',data_asc)
       data_desc=[code];
       data_asc=[];
       $("th[code]").removeClass("asc desc");
@@ -184,11 +185,13 @@ $("th[code]").on("click",function(e){
     }else{
       data_desc=[];
       data_asc=[code];
+      console.log('我是data_asc====else',data_asc)
       $("th[code]").removeClass("asc desc");
       $(this).addClass("asc");
     }
     getTabData(1);
-    // console.log(code)
+    console.log(code)
+    console.log('我是data_asc',data_asc)
 });
 //获取表格数据
 function getTabData(activePage){

+ 9 - 2
src/js/utils.js

@@ -15,7 +15,8 @@ const pageMap = {
   'YH-BLZK-ZKPFKS': 'qcListDept.html',
   'YH-BLZK-ZKPFGR': 'qcListPerson.html',
   'YH-TJFX': 'statistics.html',
-  'YH-QXGL-YHGL': 'userManager.html',
+  'YH-QXGL-YHGL': 'userManager.html',//权限管理 用户管理 暂时替换为要新添加的页面
+  // 'YH-QXGL-YHGL': 'useStatistics.html',//权限管理 用户管理 暂时替换为要新添加的页面
   'YH-QXGL-JSGL': 'roleManager.html',
   'YH-KSZR-GMKQXZB_XQ': 'mukuai.html?from=2',
   'YH-KSZR-TMQXZB_XQ': 'singleVeto.html?from=2&special=1',
@@ -26,6 +27,8 @@ const pageMap = {
   'YH-ZKK-KSPJZYHF_XQ': 'payDetail.html',
 
   'YH-ZKK-GKSQXZB': 'deptScoreDetailControl.html',
+  // 'YH-ZKK-GKSQXZB': 'useStatistics.html',
+
   'YH-ZKK-GKSZKPJF_XQ': 'deptScoreDetailControl.html',
   'YH-JCSJWH': 'deptScoreDetailControl.html',
   'YH-ZKK-GKSQXZB_XQ': 'deptScoreDetailControl.html',
@@ -64,7 +67,9 @@ const pageMap = {
   'YH-ZKHC-FPHCRW':'allotCheckTask.html',  //义乌-分配核查任务
   'YH-ZKHC-HCRWLB':'checkTaskList.html',  //义乌-核查任务列表
   'YH-ZKK-YLZLKZZB_XQ': 'qualityControl.html',
-  'YH-SJBJ':'editableDetail.html'   //数据编辑
+  'YH-SJBJ':'editableDetail.html',   //数据编辑
+  'YH-ZKK-TMQXGSTJ':'useStatistics.html',//条目缺陷改善统计
+  "YH-ZKK-LCZKSYTJ":'useStatistics.html',//临床质控使用统计
 };
 
 //导出时间天数
@@ -111,6 +116,7 @@ const getUrlArgObject = function getQueryString(name) {
   var r = window.location.search.substr(1).match(reg);
   var q = window.location.pathname.substr(1).match(reg_rewrite);
   if (r != null) {
+    // console.log('我是编码url的r',r)
     return decodeURIComponent(r[2]);
   } else if (q != null) {
     return decodeURIComponent(q[2]);
@@ -448,6 +454,7 @@ function setDatePicker(picker1, picker2, mode, startDateDefault, endDateDefault)
       })
       .datepicker('setDate', endDate);
   }
+  console.log('我是开始时间',startDate)
 }
 
 //mode=1获取开始时间,mode=1获取结束时间