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)
}