Просмотр исходного кода

新增医疗质量控制指标

luolei 4 лет назад
Родитель
Сommit
24a3565476
7 измененных файлов с 953 добавлено и 4 удалено
  1. 1 1
      src/css/index.less
  2. 302 0
      src/css/quality.less
  3. 55 0
      src/html/qualityControl.html
  4. 2 0
      src/js/api.js
  5. 588 0
      src/js/qualityControl.js
  6. 3 1
      src/js/utils.js
  7. 2 2
      webpack.config.js

+ 1 - 1
src/css/index.less

@@ -160,7 +160,7 @@
         text-indent: 42px;
         background: url("../images/module.png") 16px 12px no-repeat;
         margin-bottom: 10px;
-        background-color: red;
+        // background-color: red;
       }
 
     }

+ 302 - 0
src/css/quality.less

@@ -0,0 +1,302 @@
+@import './reset.less';
+
+.mukuai{
+    width: 100%;
+    height: 100%;
+    overflow-y: auto;
+    background-color: @disColor;
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .deptList{
+        width: 160px;
+        max-height: 400px;
+    }    
+    .deptItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .selectLevel,.selectDept{
+        display: inline-block;
+        position: relative;
+        width:160px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+    }
+    .filterItem.deptListWrap {
+        .selectDept,.deptList {
+            width: 180px;
+        }
+    }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 15px 0;
+        span{
+            display: inline-block;
+            line-height: 40px;
+            position: relative;
+        }
+        input{
+            width:120px;
+            height:40px;
+            border-radius:4px;
+            border: 1px solid #E2E5EF;
+            outline: none;
+            margin-right: 10px;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+        .canEditModule {
+            width: 142px;
+            height: 34px;
+            line-height: 34px;
+        }
+    }
+    .selectUsed,.selectReject {
+        float: right;
+    }
+    ul,li{
+        padding:0;
+        margin:0;
+        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;
+    }
+    table{
+        .table;
+        .moduleNumber{
+            text-align: center;
+        }
+        
+    }
+    // .filterBox{
+    //     margin: 0 0 20px 0;
+    // }
+    .filterItem{
+        position: relative;
+        display: inline-block;
+        margin-right: 20px;
+        height: 40px;
+        line-height: 40px;
+        margin: 0 20px 20px 0;
+    }
+    .filterDropList{
+        position: absolute;
+        right: 0;
+        max-height: 200px;
+        overflow-y: auto;
+        background: #fff;
+        display: none;
+        border: 1px solid #e4e7ed;
+        box-shadow: 0 2px 12px 0 #e4e7ed;
+        z-index: 2;
+        li{
+            padding: 0 10px;
+        }
+    }
+    .rejectList, .usedList{
+        height: 120px;
+        li{
+            padding: 0 10px;
+        }
+        li:hover{
+            background-color: #EEF4FF;
+            cursor: pointer;
+        }
+    }
+    .switchImg{
+        width: 30px;
+    }
+    .roleSelect {
+        position: relative;
+        top: 3px;
+        cursor: pointer;
+    }
+    .selectModuleType,.moduleItemInp,.selectUsed, .selectReject{
+        display: inline-block;
+        position: relative;
+        width:140px;
+        padding: 0 10px;
+        height:40px;
+        border-radius:4px;
+        border: 1px solid #E2E5EF;
+        box-sizing: border-box;
+        cursor: pointer;
+        padding-right: 26px;
+    }
+    .arrow{
+        position: absolute;
+        width: 10px;
+        top: 16px;
+        right: 10px;
+    }
+    .moduleItemInp{
+        cursor: text;
+        outline: none;
+    }
+    .moduleTypeList{
+         width: 160px;
+    }
+    .selectUsed, .selectReject{
+        width: 140px;
+    }
+    .modeTypeItem:hover{
+        background-color: #EEF4FF;
+        cursor: pointer;
+    }
+    .rejectList, .usedList {
+        width: 140px;
+    }
+    .filter{
+        display: inline-block;
+        width:60px;
+        height:36px;
+        background:@activeColor;
+        border-radius:4px;
+        color: #fff;
+        text-align: center;
+        line-height: 36px;
+        position: relative;
+        top: -1px;
+        cursor: pointer;
+    }
+    .editItem{
+       color: @activeColor;
+       cursor: pointer;
+    }
+    .editItemDis{
+        color: #aaa;
+        cursor: not-allowed;
+    }
+    
+    .ellipsis{
+        overflow: hidden;
+        text-overflow:ellipsis;
+        white-space: nowrap;
+    }
+    .textCenter{
+        text-align: center;
+    }
+    
+    
+    .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;
+    }
+    
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        -webkit-appearance: none;
+    }
+     
+    input[type="number"] {
+        -moz-appearance: textfield;
+    }
+}
+th[code]{
+    cursor: pointer;
+    &:after{
+        content:"";
+        display:inline-block;
+        width: 11px;
+        height: 14px;
+        margin-left: 4px;
+        vertical-align: middle;
+        background-size: 100%;
+        background-image: url("../images/grey.png");
+    }
+    &.asc:after{
+        background: url("../images/up_blue.png");
+        background-size: 100%;
+    }
+    &.desc:after{
+        background: url("../images/down_blue.png");
+        background-size: 100%;
+    }
+}
+
+.usrContain .selectReject,.usrContain .selectModuleType ,.managerContainer .selectModuleType  {
+    float: right;
+}
+.usrContain .rejectList,.usrContain .usedList{
+    height: 200px;
+}
+.usrContain .selectModuleType, .usrContain .moduleItemInp, .usrContain .selectUsed, .usrContain .selectReject {
+    width: 170px;
+}
+.managerContainer .moduleTypeList {
+    width: 140px;
+}
+.managerContainer.usrContain .moduleTypeList {
+    width: 170px;
+    height: 400px;
+}
+.managerContainer.usrContain .selectReject {
+    width: 140px;
+}
+
+.filterBox .filterItem .moduleLisWid {
+    width: 142px !important;
+}

+ 55 - 0
src/html/qualityControl.html

@@ -0,0 +1,55 @@
+<!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="managerContainer mukuai">
+        <div class="partTitle">
+          <p>医疗质量控制指标</p>
+          <div class="dateDetail fr">
+            
+          </div>
+        </div>
+        <div class="partTitleT"></div>
+        <div class="main-body">
+            <div class="filterBox">
+                <span class="filterItem">
+                    <span>指标名称:</span>
+                    <input type="text" class="selectModuleType canEditModule" value="全部">
+                    <ul class="moduleTypeList filterDropList moduleLisWid"></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>
+            </div>
+            <table>
+                <thead>
+                    <th class="moduleName" style="width: 65px;">序号</th>
+                    <th class="moduleItemName">病案管理专业医疗质量控制指标</th>
+                    <th class="moduleScore desc" style="width: 125px;">数据统计</th>
+                </thead>
+                <tbody class="tbody">
+    
+                </tbody>
+            </table>
+            <div class="pagination"></div>
+        </div>
+        
+        
+        
+    </div>
+</body>
+
+</html>

+ 2 - 0
src/js/api.js

@@ -181,6 +181,8 @@ const api = {
     homePageOrLevelExportByDept:'/print/export/homePageOrLevelExportByDept',//控制台(科室) / 病案首页合格率占比 / 病历列表导出,终末)
     
     getListDoctor:'/bas/doctor/getList',//(科室医生列表)
+    getMedQualityCoList:'/qc/behospitalInfo/getMedQualityCoList',//病案指标列表
+    medicalRecordIndicator:'/console/medicalRecordIndicator',//病案指标
 
 }
 module.exports = {

+ 588 - 0
src/js/qualityControl.js

@@ -0,0 +1,588 @@
+const $ = require('jquery');
+require("../css/quality.less");
+require('./../resource/jquery-ui/jquery-ui.min.js');
+require('./modal.js');
+const {api} = require('./api.js')
+const {post,getCookie,getUrlArgObjectNew,emptyBox,setDatePicker,getPickerDate,expJson,downloadExportedData,initScroll,listenScroll } = require('./utils.js')
+const switchIconOpen = require("./../images/btn_open.png")
+const switchIconClose = require("./../images/btn_close.png")
+const iconDown= require("./../images/arrow_down.png")
+const iconUp = require("./../images/arrow_up.png")
+const arrowLeft= require("./../images/arrow_left.png")
+const arrowRight = require("./../images/arrow_right.png")
+let isPlacefile = getCookie('isPlacefile')||1
+let casesId="", name="", isReject ="", isUsed ="",casesName="",casesNameTemp="",casesIdTemp="", nameTemp="", isRejectTemp ="", isUsedTemp ="",from="",deptIdTemp="",deptItemId="",deptId="",data_asc=[], data_desc=['percent'],startDateParam="", endDateParam=""   
+
+$(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+$(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+let deptList = JSON.parse(getCookie("deptList"))||[]
+$(function(){
+    listenScroll('.mukuai')
+    dateChange()
+    let srcUrl = $("#contentIframe",parent.document).attr("src")
+    // deptName = getUrlArgObjectNew("deptName",srcUrl)||""
+    isRejectTemp = isReject = getUrlArgObjectNew("dateType",srcUrl)||""
+    from = getUrlArgObjectNew("from",srcUrl)||""
+    name =nameTemp = getUrlArgObjectNew("name",srcUrl)||""
+    let startDateParam = getUrlArgObjectNew("startDateParam",srcUrl)||""
+    let endDateParam = getUrlArgObjectNew("endDateParam",srcUrl)||""
+    if(name){
+        $(".moduleItemInp").val(name)
+    }
+    
+    $(".partTitle a").click(function(){
+        //初始菜单选中
+        $(".container",parent.document).addClass("console-cont");
+        focusMenuItem('YH-KZT')
+    })
+    $(".abnormalClear").click(function(){
+        // window.location.reload()
+        setDatePicker($("#datepicker"),$("#datepicker2"),"default")
+        name=nameTemp = ""
+        casesName=casesNameTemp = ""
+        data_asc=[],
+        data_desc=['percent']
+        $("th[code]").removeClass("asc desc").addClass("desc");
+        $(".moduleScore").addClass("desc")
+        $(".patientNumInp").val("")
+        $(".selectModuleType ").val("全部")
+        getTabData(1)
+    })
+    
+    if(isReject == 1){
+        $(".monthYear .mon").css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        setDatePicker($("#datepicker"),$("#datepicker2"),1)
+    }else if(isReject == 2){
+        $(".monthYear .year").css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        setDatePicker($("#datepicker"),$("#datepicker2"),2)
+    } else if(isReject == 3){
+        setDatePicker($("#datepicker"),$("#datepicker2"),3,new Date(startDateParam),new Date(endDateParam))
+    }else{
+        setDatePicker($("#datepicker"),$("#datepicker2"),"default")
+    }
+    if(!isReject){
+        setDatePicker($("#datepicker"),$("#datepicker2"),"default")
+    }
+    getTabData(1)//条目缺陷
+})
+function focusMenuItem(code){
+    const ele = $(parent.document).find(".menu .page[code="+code+"]");
+    const parEle = ele.parents(".list-1");
+    if(!parEle.is(".list-1-show")){
+      parEle.click();
+    }
+    //console.log($(parent.document).find(".menu .page[code='YH-ZKK-GMKQXZB_XQ']"))
+    ele.click();
+  }
+bindDeptSelect()
+//科室选择
+function bindDeptSelect(){
+    $(document).on("click",'.deptItem',function(){
+        const deptItemName = $(this).attr("data-name")||''
+        const deptItemId = $(this).attr("data-id")
+        deptIdTemp =deptItemId
+        if(deptItemName.length > 10){
+            $('.selectDept').html(deptItemName.substring(0,8)+'...')
+        }else{
+            $('.selectDept').html(deptItemName)
+        }
+        $('.selectDept ').attr('title',deptItemName)
+        $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+        $(".deptList").css("display", "none")
+    })
+}
+//全选绑定
+
+$('.selectDept').on("click", function(e){
+    e.stopPropagation()
+    $(".levelList ").css("display","none")
+    $(".selectLevel .arrow").attr("src",iconDown)
+    const showList =  $(".deptList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".deptList ").css("display","block")
+        $(".selectDept .arrow").attr("src",iconUp)
+    }else{
+        $(".deptList ").css("display", "none")
+        $(".selectDept .arrow").attr("src",iconDown)
+    }
+})
+
+//科室处理
+getDeptList()
+function getDeptList(){
+    let str = ``
+    if(deptList.length<=0)return
+    // $(".mukuai .selectDept ").attr("data-id",deptList[0].deptName).find("i").html(deptList[0].deptName)
+    for(let i = 0;i < deptList.length;i++){
+        let tmp = deptList[i]
+        str += `<li class="deptItem ellipsis" title="${tmp.deptName}" data-id="${tmp.deptName}" data-name="${tmp.deptName}">${tmp.deptName}</li>`
+    }
+    $(".mukuai .filterDropList").html(str)
+}
+// YH-ZKK-GMKQXZB_XQ
+$(".menu .page", parent.document).removeClass("active")
+$(parent.document).find(".menu .page[code=YH-ZKK-GMKQXZB_XQ]").addClass("active")
+//判断有无某一权限
+function hasData(data){
+    let lis = JSON.parse(getCookie("codeLis"))||[]
+    if(lis.indexOf(data)>-1){//有权限
+        return true
+    }
+    return false;
+  }
+  //所有数据切换日期筛选
+function dateChange(){
+    $(".monthYear .mon").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        isReject = 1
+        isRejectTemp = 1
+        setDatePicker($("#datepicker"),$("#datepicker2"),1)
+        getTabData(1)
+    })
+    $(".monthYear .year").click(function(){
+        $(this).css({
+            backgroundColor:'#00A1FF',
+            color:'#fff'
+        }).siblings().css({
+            color:'#00A1FF',
+            backgroundColor:'#fff'
+        })
+        isReject = 2
+        isRejectTemp = 2
+        setDatePicker($("#datepicker"),$("#datepicker2"),2)
+        getTabData(1)
+    })
+}
+$("th[code]").on("click",function(e){
+    const code=$(this).attr("code");
+    if(data_asc[0]===code){
+      data_desc=[code];
+      data_asc=[];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("desc");
+    }else{
+      data_desc=[];
+      data_asc=[code];
+      $("th[code]").removeClass("asc desc");
+      $(this).addClass("asc");
+    }
+    getTabData(1);
+    // console.log(code)
+});
+//获取表格数据
+function 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 = {
+        indexName: casesName,
+        "startDate":dateStatrt,
+        "endDate":dateEnd,
+    }
+    startDateParam=dateStatrt
+    endDateParam=dateEnd
+    $('.pagination').html("")
+    $('.tbody').html(emptyBox('努力加载中...','',1))
+    post(api.medicalRecordIndicator,param).then(res =>{
+        if(res.data.code == '0'){
+            const data = res.data.data
+            renderTab(data,activePage)
+        }else{}
+    }).catch((e) =>{})
+}
+$(".moduleItemInp").on("input", function(e){
+    const val = $(this).val().trim()
+    nameTemp = val
+})
+$(".filter").on("click", function(e){
+    casesId=casesIdTemp, name=nameTemp, isReject =isRejectTemp, isUsed =isUsedTemp,deptId = deptIdTemp,casesName=casesNameTemp
+    if(casesName == ""){
+        $(".selectModuleType").attr({'title':"全部",'data-id':''}).val("全部")
+    }
+    getTabData(1)
+})
+$(".filterclear").on("click", function(e){
+    nameTemp = ""
+    $(".moduleItemInp").val("")
+})
+    
+$('.selectReject').on("click", function(e){
+    e.stopPropagation()
+    $(".moduleTypeList ").css("display", "none")
+    $(".usedList ").css("display", "none")
+    $(".selectUsed .arrow").attr("src",iconDown)
+    const showList =  $(".rejectList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".rejectList ").css("display","block")
+        $(".selectUsed .arrow").attr("src",iconUp)
+    }else{
+        $(".rejectList ").css("display", "none")
+        $(".selectUsed .arrow").attr("src",iconDown)
+    }
+})
+$('.selectUsed').on("click", function(e){
+    e.stopPropagation()
+    $(".moduleTypeList ").css("display", "none")
+    $(".rejectList ").css("display","none")
+    $(".selectReject .arrow").attr("src",iconDown)
+    const showList =  $(".usedList ").css("display")
+    if(showList == "none" ||!showList){
+        $(".usedList ").css("display","block")
+        $(".selectUsed .arrow").attr("src",iconUp)
+    }else{
+        $(".usedList ").css("display", "none")
+        $(".selectUsed .arrow").attr("src",iconDown)
+    }
+})
+// bindRejectSelect()
+// bindUsedSelect()
+// getmoduleTypeList()
+function renderTab(data,activePage){
+    let str = ``;
+    const cls = hasData("FUNC000007")?"editItem":"editItemDis";
+    for(let i = 0; i < data.length; i++){
+        const item = data[i]
+        str += `
+            <tr data-id=${item.id} data-index=${i}>
+                <td  class="textCenter">${(activePage-1)*15 + i+1}</td>
+                <td class="goHomeDetail" data-model="${item.name}">${item.name}</td>
+                <td class="textCenter">${item.notCopiedStr}</td>
+            </tr>
+        `
+    }
+    $('.tbody').html(str?str:emptyBox())
+    bindEdit(data,activePage)
+    $(".goHomeDetail").click(function(){
+        let model = $(this).attr("data-model")
+        focusMenuItem("YH-ZKK-TMQXZB_XQ");
+        // $(parent.document).find("#contentIframe").attr("src","quexianDetailControlHome.html?deptName="+deptName+"&from=1&casesId=243"+"&shijian="+statisticsType+"&ruleType="+ruleType)
+        $(parent.document).find("#contentIframe").attr("src","./singleVeto.html?from=1&special=1&model="+model+"&shijian=3&startDateParam="+startDateParam+"&endDateParam="+endDateParam)
+    })
+    // initScroll("mukuai","Y",1)
+}
+
+function bindEdit(data,activePage){
+    if(!hasData('FUNC000007')){
+        return
+    }
+    $('.editItem').click(function(e){
+        const index = $(this).parent().attr('data-index') 
+        editItem(data[index],activePage)
+    })
+}
+
+//修改
+function editItem(item,activePage){
+    const itemCpoy = JSON.parse(JSON.stringify(item))
+    $('.pop-box').remove()
+    $('.container').append('<div class="pop-box"></div>')
+    const str = `
+        <div class="itemMsgBox">
+            <div class="mask"></div>
+            <div class="itemMsgContent">
+                <p class="itemMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
+                <div class="itemMsgContentBox">
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">模块名称:</span> <span class="itemInfoRight">${itemCpoy.casesName}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">条目名称:</span> <span class="itemInfoRight"> ${itemCpoy.name}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">提示信息:</span> <span class="itemInfoRight"> <input class="itemTipMsg" value="${itemCpoy.msg}" /></span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">
+                        分值:
+                        </span> <span class="itemInfoRight"> 
+                            <input class="itemScore" type="number" min="0" value=${itemCpoy.score} />
+                        </span>
+                        <p class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</p>
+                    </div>
+                 
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">单项否决:</span><span class="itemInfoRight itemReject">${item.isReject == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo">  是</span>`:`<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
+                    <div class="itemMsgInfoBox"><span class="itemMsgLab">启用:</span><span class=" temInfoRight itemUsed">${item.isUsed == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo"> 是</span>`:`<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
+                </div>
+                
+                <div class="confirmEditBox"><span class="confirmEdit">保存</span></div>
+            </div>
+        </div>
+       
+    `
+    $("#mainBox", parent.document).append(str)
+    $("#mainBox .itemMsgBox .iconClose", parent.document).on("click", function(e){
+        $("#mainBox .itemMsgBox", parent.document).remove()
+    })
+    $("#mainBox .itemMsgBox .itemTipMsg", parent.document).on("input", function(e){
+        const val = $(this).val().trim()
+        itemCpoy.msg = val
+    })
+    $("#mainBox .itemMsgBox .itemScore", parent.document).on("keypress", function(e){
+        return (/[0-9\.]/.test(String.fromCharCode(e.keyCode)))
+    })
+    $("#mainBox .itemMsgBox .itemScore", parent.document).on("input", function(e){
+        const val = $(this).val()
+        itemCpoy.score = val
+    })
+    $("#mainBox .itemMsgBox .itemReject", parent.document).on("click", function(e){
+        itemCpoy.isReject = itemCpoy.isReject == 1 ? 0 : 1
+        $('#mainBox .itemMsgBox', parent.document).remove()
+        editItem(itemCpoy,activePage)
+    })
+    $("#mainBox .itemMsgBox .itemUsed", parent.document).on("click", function(e){
+        itemCpoy.isUsed = itemCpoy.isUsed == 1 ? 0 : 1
+        $('#mainBox .itemMsgBox', parent.document).remove()
+        editItem(itemCpoy,activePage)
+    })
+    
+    $("#mainBox .itemMsgBox .confirmEdit", parent.document).on("click", function(){
+        var reg = new RegExp(/^\d+(\.\d)?$/);
+        if(reg.test(itemCpoy.score)){
+            // console.log('itemCopy', itemCpoy)
+            if(!itemCpoy.msg.trim()){
+                $.alerModal({"message":"提示信息不能为空~",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
+                return 
+            }
+            
+            saveEdit(itemCpoy,activePage)
+            $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display","none")
+            $('#mainBox .itemMsgBox', parent.document).remove()
+            return 
+        }else{
+            $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display","block")
+            return
+        }
+      
+    })
+}
+
+//保存修改
+function saveEdit(item,activePage){
+    const param = {
+        id: item.id,
+        isReject: item.isReject,
+        isUsed: item.isUsed,
+        msg: item.msg,
+        score: item.score
+    }
+
+    post(api.updataQcCasesEntry,param).then(res =>{
+        if(res.data.code == '0'){
+            // const data = res.data.data
+            $.alerModal({"message":"修改成功",type:"tip",time:'1000',isFather: true,win: true, fatherWrapper: $("#mainBox", parent.document)});
+            getTabData(activePage)
+        }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)});
+    
+    })
+}
+
+
+$('.selectModuleType').on("focus", function(e){
+    e.stopPropagation()
+    $(".rejectList ").css("display","none")
+    $(".usedList ").css("display", "none")
+    $(".selectReject .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+    $(".moduleTypeList ").css("display","block")
+})
+$('.selectModuleType').on("blur", function(e){
+    $(".moduleTypeList ").css("display","none")
+})
+$('.selectModuleType').on("input", function(e){
+    let val = $(this).val().trim()
+    casesName = casesNameTemp = val
+    getmoduleTypeList(val)
+})
+getmoduleTypeList()
+//获取模块类型
+function getmoduleTypeList(val){
+    post(api.getMedQualityCoList,{}).then(res =>{
+        if(res.data.code == '0'){
+           const  moduleTypeList = res.data.data
+           renderModuleTypeList(moduleTypeList)
+        }else{
+            renderModuleTypeList([])
+        }
+    }).catch((e) =>{
+    
+    })
+}
+function renderModuleTypeList(moduleTypeList){
+    if(moduleTypeList.length == 0){
+      $('.moduleTypeList').html("")
+      return
+    }
+    let str = `<li class="modeTypeItem " data-id=" " data-name="全部">全部</li>`
+    for(let i = 0; i < moduleTypeList.length; i++){
+        str += `<li class="modeTypeItem ellipsis" title=${moduleTypeList[i].columnName} data-id=${moduleTypeList[i].columnName} data-name=${moduleTypeList[i].columnName}> ${moduleTypeList[i].columnName}</li>`
+    }
+    $('.moduleTypeList').html(str)
+    bindModuleTypeSelect()
+}
+
+//模块类型选择
+function bindModuleTypeSelect(){
+    $('.modeTypeItem').on("mousedown",function(){
+        const modeTypeItemName = $(this).attr("data-name")
+        const modeTypeItemId = $(this).attr("data-id")
+        // deptNameTemp=deptItemName=="全部"?"":deptItemName;
+        casesIdTemp =modeTypeItemId
+        casesName=casesNameTemp = modeTypeItemName=="全部"?"":modeTypeItemName;
+        $('.selectModuleType').val(modeTypeItemName).attr("title",modeTypeItemName)
+        $(".moduleTypeList ").css("display", "none")
+    })
+}
+//单项否决选择
+function bindRejectSelect(){
+    $('.rejectItem').on("click",function(){
+        const rejectItemName = $(this).attr("data-name")
+        const rejectItemId = $(this).attr("data-id")
+        isRejectTemp=rejectItemId
+        $('.selectReject').html(rejectItemName)
+        $(".rejectList ").css("display", "none")
+        $(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+
+    })
+}
+//是否启用选择
+function bindUsedSelect(){
+    $('.usedItem').on("click",function(){
+        const usedItemName = $(this).attr("data-name")
+        const usedItemItemId = $(this).attr("data-id")
+        isUsedTemp =usedItemItemId
+        $('.selectUsed').html(usedItemName)
+        $(".usedList").css("display", "none")
+        $(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
+    })
+}
+
+
+
+
+//分页渲染
+function renderPagination(totalPage,activePage,totalNum){
+    let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
+    if(totalPage <= 6){
+        for(let i = 1; i <= totalPage; i++){
+            str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+        }
+    }else{
+        if(activePage <= 3){ //选中页数小于4
+            for(let i = 1; i <= 4; i++){
+                str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
+            }
+            str += `<span class="more" >...</span>`
+        str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+
+        } else if(activePage > totalPage -3){
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
+            str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        } else {
+            str += `<span class="pageNum page1" data-page=1>1</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
+            str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
+            str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
+            str += `<span class="more" >...</span>`
+            str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
+        }
+       
+    }
+    str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
+    $('.pagination').html(str)
+    $('.page' + activePage).addClass('activePage')
+    $(".pageNum").on("click", function(e){
+        const activePageNow = Number($(this).attr('data-page'))
+        getTabData(activePageNow)
+        // renderPagination(totalPage,activePageNow,totalNum)
+    })
+    $(".prePage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow > 1){
+            activePageNow--
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    $(".nextPage").on("click", function(e){
+        let activePageNow = Number($(".activePage").attr('data-page'))
+        if(activePageNow < totalPage){
+            activePageNow++
+            getTabData(activePageNow)
+            // renderPagination(totalPage,activePageNow,totalNum)
+        }
+    })
+    
+}
+
+$(document).on("click", function(){
+    $(".rejectList ").css("display","none")
+    $(".usedList ").css("display", "none")
+    $(".selectReject .arrow").attr("src",iconDown)
+    $(".selectUsed .arrow").attr("src",iconDown)
+})
+
+
+$(function() {
+    const  iconCalenBlue= require("./../images/darkDate.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()
+    })
+    $('.exportData').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 = {
+            type: 0,
+            name: name, //条目名
+            deptName: deptId, //科室名
+            asc:data_asc,     //升序
+            casesName:casesName=='全部'?'':casesName, //模块Id
+            desc: data_desc,       //降序
+            "startDate":startDateParam,
+            "endDate":endDateParam,
+            "isPlacefile":isPlacefile
+        }
+        expJson(api.entryCountGroupByCaseExport,param).then(res =>{
+            downloadExportedData(res.data, "各模块缺陷占比.xls")
+        })
+    })
+});

+ 3 - 1
src/js/utils.js

@@ -3,7 +3,7 @@ const $ = require('jquery');
 const axios = require('axios');
 var Utils = require('./rePromise');
 require('./scrollBar.js');
-const baseUrl = 'http://192.168.2.241:5858';
+const baseUrl = 'http://192.168.2.236:5858';
 //页面映射
 const pageMap = {
   'YH-KZT': 'console.html',
@@ -62,6 +62,8 @@ const pageMap = {
   'YH-KSZR-GJTMQXZB_XQ': 'keyItemFlawControlDept.html',
   'YH-KSZR-CYRSTJ_XQ': 'qcListOutHospitalDept.html?from=2',
   'YH-KSZR-RYRSTJ_XQ': 'qcListOutHospitalDept.html?inner=2&from=2',
+
+  'YH-ZKK-YLZLKZZB_XQ': 'qualityControl.html',
 };
 
 //导出时间天数

+ 2 - 2
webpack.config.js

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