const $ = require('jquery'); require("../css/reset.less") require("../css/deptConsole.less") require("../images/logo.png") require("../images/arrow_down.png") // import 'zrender/lib/svg/svg'; const {api} = require('./api.js') const echarts = require('echarts'); const {post,setCookie,delCookie,getCookie,focusMenuItem,picEmptyData } = require('../js/utils.js'); let payMoney = [],dayLis = [],dateType = 2,curDept = '',curDeptId='',datafst=[],datasec=[],datatrd=[],datafour=[],hospital=getCookie("hospital"); $(function(){ if(!hasData('YH-KZT')&&!hasData('YH-KZTKS')){ $("body").html('') } if(hospital == "台州市立"){ $(".circleBSingle").css("display","block") $(".circleBLis").css("display","none") }else{ $(".circleBSingle").css("display","none") $(".circleBLis").css("display","block") } $(".partTitle p span").html(hospital) setInterval(() => { getTimeDetail() }, 1000); // resizeBox() initConsole()//质控列表 getOwnDept() dateChange() $(window).click(function(){ window.parent.userActionHide() $(".toggleSlide ul").css("display","none") }) $(".toggleSlide p").click(function(e){ e.stopPropagation() $(this).next().slideToggle() }) $(".part02").on("mouseenter",".bingli li.sec",function(){ $(this).find(".explainNum").css("color","#00A1FF") }) $(".part02").on("mouseleave",".bingli li.sec",function(){ $(this).find(".explainNum").css("color","#A5ADBF") }) tiaomu() }) function tiaomu(){ $(".defect .partTitlePub").click(function(){ focusMenuItem("YH-KSZR-GMKQXZB_XQ"); $(parent.document).find("#contentIframe").attr("src","mukuai.html?from=2&deptName="+curDept+"&dateType="+dateType) }); $(".circleBSingle .title,.homePageNo .title").click(function(){ focusMenuItem("YH-KSZR-TMQXZB_XQ"); $(parent.document).find("#contentIframe").attr("src","tiaomu.html?from=2&deptName="+curDept+"&dateType="+dateType) }); $(".homePage .title").click(function(){ focusMenuItem("YH-KSZR-BASYHGLZB_XQ") $(parent.document).find("#contentIframe").attr("src","partDetail.html?from=2&deptName="+curDept+"&dateType="+dateType) }); $(".part02 .bingliLis").click(function(){ focusMenuItem("YH-KSZR-KSQXZB_XQ"); $(parent.document).find("#contentIframe").attr("src","deptScoreDetail.html?from=2&deptName="+curDept+"&dateType="+dateType+"&curDeptId="+curDeptId) }); $(".part02").on("click",".bingli li.sec",function(){ focusMenuItem("YH-BLZK-ZKPFKS"); let dataC = $(this).attr("data-c") let chengdu = dataC == 1?'甲':dataC==2?'乙':'丙' $(parent.document).find("#contentIframe").attr("src","./qcListDept.html?from=1&dateType="+dateType+"&chengdu="+chengdu+"&deptName="+curDept+"&deptId="+curDeptId) }); } //判断有无某一权限 function hasData(data){ let lis = JSON.parse(getCookie("codeLis"))||[] // console.log(lis) if(lis.indexOf(data)>-1){//有权限 return true } return false; } function resizeBox(){ $(".partWrap").css({ height:$(window).height()-38+'px' }) } //所有数据切换日期筛选 function dateChange(){ $(".monthYear .mon").click(function(){ $(this).css({ backgroundColor:'#00A1FF', color:'#E9EBEF', "border-color":'#00A1FF' }).siblings().css({ "border-color":'#A5ADBF', color:'#A5ADBF', backgroundColor:'#203463' }) dateType = 1 getBarData(1) }) $(".monthYear .year").click(function(){ $(this).css({ backgroundColor:'#00A1FF', color:'#E9EBEF', "border-color":'#00A1FF' }).siblings().css({ "border-color":'#A5ADBF', color:'#A5ADBF', backgroundColor:'#203463' }) dateType = 2 getBarData(2) }) } //控制台数 function initConsole(result){ let url = { '本月病历数':require("../images/icon6.png"), '本月不合格病历-机器':require("../images/icon7.png"), '本月质控数-机器':require("../images/icon10.png"), '本月甲级病历-机器':require("../images/icon8.png"), '本月乙级病历-机器':require("../images/icon9.png"), '本年病历数':require("../images/icon6.png"), '本年不合格病历-机器':require("../images/icon7.png"), '本年质控数-机器':require("../images/icon10.png"), '本年甲级病历-机器':require("../images/icon8.png"), '本年乙级病历-机器':require("../images/icon9.png"), } let dom = ''; for(let i in result){ if(i.indexOf("人工")==-1){ let name = i.split("-")[0]; let num = 0; if(name=='本月病历数'||name=='本年病历数'){ num = result[i] }else{ num = result[name+'-人工']+result[i] } dom += `
  • ${name}

    ${num}

  • ` } } $(".partAll").html(dom) } //获取科室列表 function getOwnDept(){ // if(hasData('FUNC000058')){ post(api.getDept,{}).then((res)=>{ let data = res.data; if(data.code == 0){ let result = data.data renderDeptLis(result)//科室tab渲染 curDept = result[0].deptName curDeptId = result[0].deptId $(".partTitle p i,.toggleSlide p span").html(curDept).attr({"title":curDept,'data-dept':curDept,'dept-id':curDeptId}) getBarData(2)//图标数据获取 }else { $(".partTitle p i,.toggleSlide p span").html('--') } }).catch(()=>{ $(".partTitle p i,.toggleSlide p span").html('--') }) // } } function renderDeptLis(data){ let str = '' for(let i = 0; i < data.length;i++){ str += `
  • ${data[i].deptName}
  • ` } $(".toggleSlide ul").html(str) $(".toggleSlide ul li").click(function(){ let name = $(this).attr("data-dept") let did = $(this).attr("dept-id") curDept = name 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]||[]) setNumDetail(datasec[name]||[]) queList(datatrd[name]||[]) getHomePageLevelStatisticsByDept() for(let i = 0;i < datafour[name].length;i++){ datafour[name][i].value = datafour[name][i].num } if(hospital=="台州市立"){ emptyCircleB(datafour[name]) panDetailB(datafour[name]) }else{ emptyCircleBc(datafour[name]) panDetailBc(datafour[name]) } $(this).addClass("li0").siblings().removeClass("li0") }) } //获取图表数据 function getBarData(type){ if(hasData('FUNC000054')){ post(api.leaveHosCountByDept,{//出院人数统计 "type": type||1//1月2年 }).then((res)=>{ let data = res.data; if(data.code == 0){ let result = data.data[curDept]||[] datafst = data.data personNum(result) } }) } if(hasData('FUNC000055')){ post(api.mrCountByDept,{//质控病历统计 "type": type||1//1月2年 }).then((res)=>{ let data = res.data if(data.code == 0){ let result3 = data.data[curDept]||[] datasec = data.data setNumDetail(result3) } }) } if(hasData('FUNC000056')){ post(api.entryCountGroupByCaseAndDept,{//各模块缺陷占比排行 "type": type||1//1月2年 }).then((res)=>{ let data = res.data; if(data.code == 0){ let result1 = data.data[curDept]||[] datatrd = data.data queList(result1) } }) } if(hasData('FUNC000057')){ if(hospital=="台州市立"){ post(api.entryCountGroupByEntryAndDept,{//条目缺陷占比 "type": type||1//1月2年 }).then((res)=>{ let data = res.data; if(data.code == 0){ let result3 = data.data[curDept]||[] for(let i = 0;i < result3.length;i++){ result3[i].value = result3[i].num } datafour = data.data emptyCircleB(result3) panDetailB(result3) } }) }else{ post(api.entryCountGroupByEntryAndDept,{//条目缺陷占比 "type": type||1//1月2年 }).then((res)=>{ let data = res.data; if(data.code == 0){ let result3 = data.data[curDept]||[] for(let i = 0;i < result3.length;i++){ result3[i].value = result3[i].num } datafour = data.data emptyCircleBc(result3) panDetailBc(result3) } }) } } getHomePageLevelStatisticsByDept(type) } function getHomePageLevelStatisticsByDept(type){ if(hospital=="长兴医院"&&hasData("FUNC000076")){ post(api.homePageLevelStatisticsByDept,{//病案首页 "type": dateType||2,//1月2年 "deptName":curDept }).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) } }) } } function lineChartSpecial(dataX,dataY){ if(dataX.length==0&&dataY.length==0){ $(".emptyLineCircle").css("display","none") picEmptyData('.emptyLineCircleEmpty') return }else{ $(".emptyLineCircle").css("display","block") $(".emptyLineCircleEmpty").css("display","none") } var myCharts = echarts.init(document.getElementById('lineChart')); var lengthNum = dataX.length; $(window).resize(function(){ myCharts.resize() }); option = { color: ['#37C4FC'], tooltip: { trigger: 'axis', position: 'right', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'line' // 默认为直线,可选为:'line' | 'shadow' }, formatter: function(param) { return '
    '+ param[0].name + "
    " +'病案首页合格率:'+ param[0].value+"%" + "
    " '
    ' } }, grid: { left: '3%', right: '4%', bottom: '3%', 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 }, axisLabel: {//y轴刻度 textStyle: { color: '#E9EBEF' } }, splitLine:{//分割线 lineStyle:{ color:'#344876' } } } ], title:[{ text: '合格率', top: 15, left: 10, textStyle: { fontSize: 14, color:'#fff', fontWeight: 400 } }], series: [ { name: '病案首页合格率', type: 'bar', barWidth: '23%', data: dataY } ] }; myCharts.setOption(option); } //part01 function personNum(data){ if(data['总人数']==0){ $(".chuyuan,.personNum").css("display","none") picEmptyData(".chuyuanEmpty") return }else{ $(".chuyuanEmpty").css("display","none") $(".chuyuan,.personNum").css("display","block") } $(".personNum").html("总人数:"+data['总人数']) $(".died").html(data['死亡人数']) $(".newborn").html(data['新生儿人数']) $(".patientNum").html(data['手术病人数']) } //part02 function setNumDetail(data){ // console.log(data,2222222222) if(data.length == 0){ $(".pingfendengji").css("display","block") $(".bldjs").css("display","none") picEmptyData(".pingfendengjiEmpty") return }else{ $(".bldjs").css("display","block") $(".pingfendengji").css("display","none") } let str = '' for(let i = 0;i < data.length;i++){ str += `
  • ${data[i].num}

    ${data[i].name}

  • ` if(data[i].name == '甲级病历'){ let tmp = [] data[i].value = data[i].num tmp.push(data[i]) tmp.push({percentStr:(1-data[i].percent)*100+'%',value:data[i].totleNum - data[i].num}) part02pan(tmp,'fen01') } if(data[i].name == '乙级病历'){ let tmp = [] data[i].value = data[i].num tmp.push(data[i]) tmp.push({percentStr:(1-data[i].percent)*100+'%',value:data[i].totleNum - data[i].num}) part02pan(tmp,'fen02') } if(data[i].name == '丙级病历'){ let tmp = [] data[i].value = data[i].num tmp.push(data[i]) tmp.push({percentStr:(1-data[i].percent)*100+'%',value:data[i].totleNum - data[i].num}) part02pan(tmp,'fen03') } } $('.bingli').html(str) } //part02pan function part02pan(data,dom){ // console.log(data,33333) dom = echarts.init(document.getElementById(dom)); $(window).resize(function(){ dom.resize() }); let bgColor = '#fff'; let title = '总量'; let color = ['#3fffd1','#4c5c82']; let echartData = data; option = { // backgroundColor: bgColor, color: color, title: [{ text:'{val|' + echartData[0].percentStr + '}', top: 'center', left: 'center', textStyle: { rich: { val: { fontSize: 14, color: '#E9EBEF', fontWeight: 'bold', padding: [10, 0] }, name: { fontSize: 12, fontWeight: 'normal', color: '#E9EBEF', } } } }], series: [{ name: '', type: 'pie', radius: ['70%', '90%'], data: echartData, hoverAnimation:true, hoverOffset:3, itemStyle: { normal: { borderColor: '#203463', borderWidth: 3 } }, label: { normal: { show:false, } }, }] }; dom.setOption(option); } //柱状图住院日期 function emptyCircleB(data){ if(data.length == 0){ $(".emptyCircleBData").css("'display","none !important") picEmptyData(".emptyCircleBWrap") }else{ $(".emptyCircleBData").css("'display","block") $(".emptyCircleBWrap").css("display","none") } if(!document.getElementById('emptyCircleB'))return var myChart = echarts.init(document.getElementById('emptyCircleB')); $(window).resize(function(){ myChart.resize() }); let bgColor = '#fff'; let title = '总量'; let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336']; let echartData = data; let total = echartData.length>0?echartData[0].totleNum:0; option = { // backgroundColor: bgColor, color: color, title: [{ text: data.length>0?'{val|' + total + '}\n{name|' + title + '}':'', top: 'center', left: 'center', textStyle: { rich: { val: { fontSize: 24, color: '#E9EBEF', fontWeight: 'bold', padding: [10, 0] }, name: { fontSize: 12, fontWeight: 'normal', color: '#E9EBEF', } } } }], tooltip: { trigger: 'item', position: 'right', // formatter: '{b} : {c} ({d}%)', formatter:function(item){ const {name, num, percentStr} = item.data return `${name} : ${num} (${percentStr})` } }, series: [{ name: '', type: 'pie', radius: ['70%', '90%'], data: echartData, hoverAnimation:true, hoverOffset:5, itemStyle: { normal: { // borderColor: bgColor, borderWidth: 3 } }, labelLine: { normal: { length: 20, length2: 120, lineStyle: { color: '#e6e6e6' } } }, label: { normal: { show:false, formatter: params => { return params.name == 'A类'?params.name:'' }, padding: [0 , -100, 25, -100], rich: { icon: { fontSize: 16 }, name: { fontSize: 14, padding: [0, 10, 0, 4], color: '#666666' }, value: { fontSize: 18, fontWeight: 'bold', color: '#333333' } } } }, }] }; myChart.setOption(option); } function emptyCircleBc(data){ if(data.length == 0){ $(".emptyCircleBDatas").css("'display","none !important") picEmptyData(".emptyCircleBWraps") }else{ $(".emptyCircleBDatas").css("'display","block") $(".emptyCircleBWraps").css("display","none") } var myChart = echarts.init(document.getElementById('emptyCircleBc')); $(window).resize(function(){ myChart.resize() }); let bgColor = '#fff'; let title = '总量'; let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336']; let echartData = data; let total = echartData.length>0?echartData[0].totleNum:0; option = { // backgroundColor: bgColor, color: color, title: [{ text: data.length>0?'{val|' + total + '}\n{name|' + title + '}':'', top: 'center', left: 'center', textStyle: { rich: { val: { fontSize: 24, color: '#E9EBEF', fontWeight: 'bold', padding: [10, 0] }, name: { fontSize: 12, fontWeight: 'normal', color: '#E9EBEF', } } } }], tooltip: { trigger: 'item', position: 'right', // formatter: '{b} : {c} ({d}%)', formatter:function(item){ const {name, num, percentStr} = item.data return `${name} : ${num} (${percentStr})` } }, series: [{ name: '', type: 'pie', radius: ['70%', '90%'], data: echartData, hoverAnimation:true, hoverOffset:5, itemStyle: { normal: { borderColor: '#203463', borderWidth: 3 } }, labelLine: { normal: { length: 20, length2: 120, lineStyle: { color: '#fff' } } }, label: { normal: { show:false, formatter: params => { return params.name == 'A类'?params.name:'' }, padding: [0 , -100, 25, -100], rich: { icon: { fontSize: 16 }, name: { fontSize: 14, padding: [0, 10, 0, 4], color: '#fff' }, value: { fontSize: 18, fontWeight: 'bold', color: '#fff' } } } }, }] }; myChart.setOption(option); } //缺陷列表渲染 function queList(data){ let strAll = '',tmp = `mm 排名 缺陷详情 数量 占比 ` if(data.length == 0){ $(".qtable").css("display","none") picEmptyData(".qtableEmpty") return }else{ $(".qtableEmpty").css("display","none") $(".qtable").css("display","table") } for(let i = 0;i < data.length;i++){ strAll += ` ${i+1}

    ${data[i].name}

    ${data[i].num} ${data[i].percentStr} ` } $(".qtable").html(tmp+strAll) $(".homegodetail").click(function(){ let name = $(this).attr("data-name") focusMenuItem("YH-KSZR-GMKQXZB_XQ"); $(parent.document).find("#contentIframe").attr("src","./mukuai.html?from=1&dateType="+dateType+"&name="+name) }) } //饼图列表注释渲染 function panDetailB(data){ let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336']; let strAll = ''; for(let i = 0;i < data.length;i++){ strAll += `

    ${data[i].name}

    ${data[i].num} (${data[i].percentStr}) ` } $(".explainPanB table").html(strAll); $(".explainPan").css({ marginTop:-($(".explainPan").height()/2-20)+'px' }) } function panDetailBc(data){ let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336']; let strAll = ''; for(let i = 0;i < data.length;i++){ strAll += `

    ${data[i].name}

    ${data[i].num} (${data[i].percentStr}) ` } $(".explainPanBc table").html(strAll); $(".explainPan").css({ marginTop:-($(".explainPanc").height()/2-20)+'px' }) // $(".homePageNo .explainPanBc .explainLi").click(function(){ // let deptName = $(this).attr("data-dept") // focusMenuItem("YH-BLZK-ZKPFKS"); // $(parent.document).find("#contentIframe").attr("src","./qcList.html?from=1&dateType="+dateType+"&deptName="+deptName) // }) } //时间获取 function getTimeDetail(){ const d = new Date(); const days = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; let sec = d.getSeconds() let min = d.getMinutes() let hour = d.getHours() let str = `${d.getFullYear()}年${d.getMonth()+1}月${d.getDate()}日 / ${days[d.getDay()]} / ${hour>9?hour:'0'+hour}:${min>9?min:'0'+min}:${sec>9?sec:'0'+sec}` $(".dateDetail").html(str) }