|
@@ -2,27 +2,72 @@ const $ = require('jquery');
|
|
require("../css/reset.less")
|
|
require("../css/reset.less")
|
|
require("../css/console.less")
|
|
require("../css/console.less")
|
|
require("../images/logo.png")
|
|
require("../images/logo.png")
|
|
|
|
+require("../images/arrow_down.png")
|
|
|
|
|
|
// import 'zrender/lib/svg/svg';
|
|
// import 'zrender/lib/svg/svg';
|
|
const echarts = require('echarts');
|
|
const echarts = require('echarts');
|
|
-const {post,setCookie,delCookie} = require('../js/utils.js');
|
|
|
|
-
|
|
|
|
|
|
+const {post,setCookie,delCookie,getCookie} = require('../js/utils.js');
|
|
|
|
+let payMoney = [],dayLis = [],dateType = 1,slideType = 1;
|
|
$(function(){
|
|
$(function(){
|
|
-// var mySwiper = new Swiper('.swiper-container',{
|
|
|
|
-// // autoplay : 500,//可选选项,自动滑动
|
|
|
|
-// loop : true,//可选选项,开启循环
|
|
|
|
-// slidesPerView : 3,
|
|
|
|
-// })
|
|
|
|
|
|
+ if(!hasData('YH-KZT')){
|
|
|
|
+ $("body").html('')
|
|
|
|
+ }
|
|
|
|
+ $(".partTitle p span").html(getCookie("hospital"))
|
|
|
|
+ setInterval(() => {
|
|
|
|
+ getTimeDetail()
|
|
|
|
+ }, 1000);
|
|
|
|
+ resizeBox()
|
|
|
|
+ initConsole()//质控列表
|
|
|
|
+ getBarData()//图标数据获取
|
|
|
|
+ dateChange()
|
|
|
|
+ $(window).click(function(){
|
|
|
|
+ window.parent.userActionHide()
|
|
|
|
+ $(".toggleSlide ul").css("display","none")
|
|
|
|
+ })
|
|
|
|
+ let sildeIS = true
|
|
|
|
+ if(!hasData('FUNC000045')&&!hasData('FUNC000046')){
|
|
|
|
+ $(".toggleSlide").css("opacity","0.5")
|
|
|
|
+ sildeIS = false
|
|
|
|
+ }
|
|
|
|
+ $(".toggleSlide p").click(function(e){
|
|
|
|
+ if(!sildeIS)return
|
|
|
|
+ e.stopPropagation()
|
|
|
|
+ $(this).next().slideToggle()
|
|
|
|
+ })
|
|
|
|
+ $(".toggleSlide li").click(function(){
|
|
|
|
+ let str = $(this).attr("data-str"),type = $(this).attr("data-type")
|
|
|
|
+ if(type == 1){
|
|
|
|
+ if(!hasData('FUNC000045')){
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ slideType = 1
|
|
|
|
+ $(".pubEchart .title").html("科室平均住院天数柱状图")
|
|
|
|
+ barChart(dayLis,dateType)
|
|
|
|
+ }else{
|
|
|
|
+ if(!hasData('FUNC000046')){
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ slideType = 2
|
|
|
|
+ $(".pubEchart .title").html("科室平均住院花费柱状图")
|
|
|
|
+ barChart(payMoney,dateType)
|
|
|
|
+ }
|
|
|
|
+ $(this).parent().slideToggle().prev().find("span").html(str)
|
|
|
|
+ })
|
|
|
|
+})
|
|
|
|
+//判断有无某一权限
|
|
|
|
+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({
|
|
$(".partWrap").css({
|
|
height:$(window).height()-38+'px'
|
|
height:$(window).height()-38+'px'
|
|
})
|
|
})
|
|
- initConsole()//质控列表
|
|
|
|
- getBarData()//图标数据获取
|
|
|
|
- dateChange()
|
|
|
|
- $(window).click(function(){
|
|
|
|
- window.parent.userActionHide()
|
|
|
|
- })
|
|
|
|
-})
|
|
|
|
|
|
+}
|
|
//所有数据切换日期筛选
|
|
//所有数据切换日期筛选
|
|
function dateChange(){
|
|
function dateChange(){
|
|
$(".monthYear .mon").click(function(){
|
|
$(".monthYear .mon").click(function(){
|
|
@@ -33,6 +78,7 @@ function dateChange(){
|
|
color:'#5A8EEE',
|
|
color:'#5A8EEE',
|
|
backgroundColor:'#fff'
|
|
backgroundColor:'#fff'
|
|
})
|
|
})
|
|
|
|
+ dateType = 1
|
|
getBarData(1)
|
|
getBarData(1)
|
|
})
|
|
})
|
|
$(".monthYear .year").click(function(){
|
|
$(".monthYear .year").click(function(){
|
|
@@ -43,6 +89,7 @@ function dateChange(){
|
|
color:'#5A8EEE',
|
|
color:'#5A8EEE',
|
|
backgroundColor:'#fff'
|
|
backgroundColor:'#fff'
|
|
})
|
|
})
|
|
|
|
+ dateType = 2
|
|
getBarData(2)
|
|
getBarData(2)
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -87,51 +134,369 @@ function initConsole(result){
|
|
}
|
|
}
|
|
//获取图表数据
|
|
//获取图表数据
|
|
function getBarData(type){
|
|
function getBarData(type){
|
|
- post('/console/mrStatistics',{
|
|
|
|
- "type": type||1//1月2年
|
|
|
|
- }).then((res)=>{
|
|
|
|
- let data = res.data;
|
|
|
|
- if(data.code == 0){
|
|
|
|
- let result = data.data
|
|
|
|
- initConsole(result)
|
|
|
|
|
|
+ console.log(slideType,'797979898')
|
|
|
|
+ if(hasData('FUNC000045')){
|
|
|
|
+ post('/console/getAverageDayNum',{//平均住院天数
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result2 = data.data['平均住院日']||[]
|
|
|
|
+ dayLis = result2
|
|
|
|
+ if(slideType == 1){
|
|
|
|
+ barChart(result2,type||1)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }else{
|
|
|
|
+ $(".toggleSlide1").css("opacity",0.5)
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000046')){
|
|
|
|
+ post('/console/getAverageFee',{//平均住院费用
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result3 = data.data['平均住院费用']||[]
|
|
|
|
+ payMoney = result3;
|
|
|
|
+ if(slideType == 2){
|
|
|
|
+ barChart(result3,type||1)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }else{
|
|
|
|
+ $(".toggleSlide2").css("opacity",0.5)
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000047')){
|
|
|
|
+ post('/console/getAverageScore',{//各科室质控平均分
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).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].name)
|
|
|
|
+ dataY1.push(result1[i].averageValue)
|
|
|
|
+ }
|
|
|
|
+ barChartPay(dataX1,dataY1)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000048')){
|
|
|
|
+ post('/console/getLevelResultDept',{//各科室甲级占比
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result2 = data.data['各科室甲级病历占比']||[]
|
|
|
|
+ let dataX2=[],dataY2=[];
|
|
|
|
+ for(let i = 0;i < result2.length;i++){
|
|
|
|
+ dataX2.push(result2[i].deptName)
|
|
|
|
+ dataY2.push(result2[i].firstPercent.replace('%',''))
|
|
|
|
+ }
|
|
|
|
+ lineChart(dataX2,dataY2)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000049')){
|
|
|
|
+ post('/console/leaveHosCount',{//出院人数统计
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ // barChart(result2,type||1)
|
|
|
|
+ // console.log(data)
|
|
|
|
+ let result1 = data.data['出院人数统计']||[]
|
|
|
|
+ personNum(result1)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000050')){
|
|
|
|
+ post('/console/mrCount',{//质控病历统计
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result3 = data.data['病历数统计']||[]
|
|
|
|
+ if(result3.length == 0){
|
|
|
|
+ result3 = [
|
|
|
|
+ {
|
|
|
|
+ "id":null,
|
|
|
|
+ "name":"累计质控病历数",
|
|
|
|
+ "totleNum":0,
|
|
|
|
+ "num":0,
|
|
|
|
+ "percent":null,
|
|
|
|
+ "percentStr":null
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "id":null,
|
|
|
|
+ "name":"甲级病历",
|
|
|
|
+ "totleNum":10,
|
|
|
|
+ "num":0,
|
|
|
|
+ "percent":0,
|
|
|
|
+ "percentStr":"0.00%"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "id":null,
|
|
|
|
+ "name":"乙级病历",
|
|
|
|
+ "totleNum":10,
|
|
|
|
+ "num":0,
|
|
|
|
+ "percent":0,
|
|
|
|
+ "percentStr":"0.00%"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "id":null,
|
|
|
|
+ "name":"丙级病历",
|
|
|
|
+ "totleNum":10,
|
|
|
|
+ "num":0,
|
|
|
|
+ "percent":0,
|
|
|
|
+ "percentStr":"0.00%"
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ setNumDetail(result3)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000051')){
|
|
|
|
+ post('/console/entryCountGroupByCase',{//各模块缺陷占比排行
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result1 = data.data['各模块缺陷占比排行']||[]
|
|
|
|
+ queList(result1)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000052')){
|
|
|
|
+ post('/console/entryCountGroupByEntry',{//条目缺陷占比
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result3 = data.data['条目缺陷占比']||[]
|
|
|
|
+ for(let i = 0;i < result3.length;i++){
|
|
|
|
+ result3[i].value = result3[i].num
|
|
|
|
+ }
|
|
|
|
+ emptyCircleB(result3)
|
|
|
|
+ panDetailB(result3)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(hasData('FUNC000053')){
|
|
|
|
+ post('/console/entryByDept',{//各科室缺陷占比
|
|
|
|
+ "type": type||1//1月2年
|
|
|
|
+ }).then((res)=>{
|
|
|
|
+ let data = res.data;
|
|
|
|
+ if(data.code == 0){
|
|
|
|
+ let result2 = data.data['各科室缺陷占比']||[]
|
|
|
|
+ for(let i = 0;i < result2.length;i++){
|
|
|
|
+ result2[i].value = result2[i].num
|
|
|
|
+ }
|
|
|
|
+ emptyCircle(result2)
|
|
|
|
+ panDetail(result2)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+//part01
|
|
|
|
+function personNum(data){
|
|
|
|
+ $(".personNum").html("总人数:"+data['总人数'])
|
|
|
|
+ $(".died").html(data['死亡人数'])
|
|
|
|
+ $(".newborn").html(data['新生儿人数'])
|
|
|
|
+ $(".patientNum").html(data['手术病人数'])
|
|
|
|
+}
|
|
|
|
+//part02
|
|
|
|
+function setNumDetail(data){
|
|
|
|
+ // console.log(data,2222222222)
|
|
|
|
+ if(data.length == 0)return
|
|
|
|
+ let str = ''
|
|
|
|
+ for(let i = 0;i < data.length;i++){
|
|
|
|
+ str += `
|
|
|
|
+ <li class="${i==0?'fst':''}">
|
|
|
|
+ <p class="numShow">${data[i].num}</p>
|
|
|
|
+ <p class="explainNum">${data[i].name}</p>
|
|
|
|
+ </li>
|
|
|
|
+ `
|
|
|
|
+ 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')
|
|
}
|
|
}
|
|
- })
|
|
|
|
- post('/console/averageStatistics',{//柱状数据
|
|
|
|
- type:type||1
|
|
|
|
- }).then((res)=>{
|
|
|
|
- let data = res.data;
|
|
|
|
- if(data.code == 0){
|
|
|
|
- let result1 = data.data['平均住院费用']
|
|
|
|
- let result2 = data.data['平均住院日']
|
|
|
|
- let dataX1=[],dataY1=[],dataX2=[],dataY2=[];
|
|
|
|
- for(let i = 0;i < result1.length;i++){
|
|
|
|
- dataX1.push(result1[i].deptName)
|
|
|
|
- dataY1.push(result1[i].averageValue)
|
|
|
|
- }
|
|
|
|
- for(let i = 0;i < result2.length;i++){
|
|
|
|
- dataX2.push(result2[i].deptName)
|
|
|
|
- dataY2.push(result2[i].averageValue)
|
|
|
|
- }
|
|
|
|
- barChartPay(dataX1,dataY1)
|
|
|
|
- barChart(dataX2,dataY2)
|
|
|
|
|
|
+ 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')
|
|
}
|
|
}
|
|
- })
|
|
|
|
- post('/console/resultStatistics',{//饼图数据
|
|
|
|
- type:type||1
|
|
|
|
- }).then((res)=>{
|
|
|
|
- let data = res.data;
|
|
|
|
- if(data.code == 0){
|
|
|
|
- let result1 = data.data['缺陷排行列表']
|
|
|
|
- let result2 = data.data['各科室缺陷占比']
|
|
|
|
- for(let i = 0;i < result2.length;i++){
|
|
|
|
- result2[i].value = result2[i].num
|
|
|
|
- }
|
|
|
|
- queList(result1)
|
|
|
|
- emptyCircle(result2)
|
|
|
|
- panDetail(result2)
|
|
|
|
|
|
+ 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 = ['#37CBCB','#dedede'];
|
|
|
|
+ let echartData = data;
|
|
|
|
+ option = {
|
|
|
|
+ backgroundColor: bgColor,
|
|
|
|
+ color: color,
|
|
|
|
+ title: [{
|
|
|
|
+ text:'{val|' + echartData[0].percentStr + '}',
|
|
|
|
+ top: 'center',
|
|
|
|
+ left: 'center',
|
|
|
|
+ textStyle: {
|
|
|
|
+ rich: {
|
|
|
|
+ val: {
|
|
|
|
+ fontSize: 14,
|
|
|
|
+ color: '#333',
|
|
|
|
+ fontWeight: 'bold',
|
|
|
|
+ padding: [10, 0]
|
|
|
|
+ },
|
|
|
|
+ name: {
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ fontWeight: 'normal',
|
|
|
|
+ color: '#777',
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }],
|
|
|
|
+ series: [{
|
|
|
|
+ name: '',
|
|
|
|
+ type: 'pie',
|
|
|
|
+ radius: ['70%', '90%'],
|
|
|
|
+ data: echartData,
|
|
|
|
+ hoverAnimation:false,
|
|
|
|
+ label: {
|
|
|
|
+ normal: {
|
|
|
|
+ show:false,
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ }]
|
|
|
|
+ };
|
|
|
|
+ dom.setOption(option);
|
|
|
|
+}
|
|
|
|
+//折现图
|
|
|
|
+function lineChart(dataX,dataY){
|
|
|
|
+ var myCharts = echarts.init(document.getElementById('lineChart'));
|
|
|
|
+ $(window).resize(function(){
|
|
|
|
+ myCharts.resize()
|
|
|
|
+ });
|
|
|
|
+ option = {
|
|
|
|
+ color:"#5A8EEE",
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'axis',
|
|
|
|
+ color:'#fff',
|
|
|
|
+ formatter: function(param) {
|
|
|
|
+ return '<div style="color:#fff;"> '+ param[0].name + "<br>" +"甲级病历占比:"+ param[0].value+"%" + "<br>"
|
|
|
|
+ '</div>'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ grid: {
|
|
|
|
+ left: '3%',
|
|
|
|
+ right: '5%',
|
|
|
|
+ bottom: '3%',
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ title:[{
|
|
|
|
+ text: '百分比',
|
|
|
|
+ top: 15,
|
|
|
|
+ left: 0,
|
|
|
|
+ textStyle: {
|
|
|
|
+ fontSize: 14,
|
|
|
|
+ color:'#666666',
|
|
|
|
+ fontWeight: 400
|
|
|
|
+ }
|
|
|
|
+ }],
|
|
|
|
+ toolbox: {
|
|
|
|
+ show: false,
|
|
|
|
+ feature: {
|
|
|
|
+ dataZoom: {
|
|
|
|
+ yAxisIndex: 'none'
|
|
|
|
+ },
|
|
|
|
+ dataView: {readOnly: false},
|
|
|
|
+ magicType: {type: ['line', 'bar']},
|
|
|
|
+ restore: {
|
|
|
|
|
|
|
|
+ },
|
|
|
|
+ saveAsImage: {}
|
|
|
|
+ },
|
|
|
|
+ emphasis:{
|
|
|
|
+ iconStyle:{
|
|
|
|
+ color:'red'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ xAxis: {
|
|
|
|
+ type: 'category',
|
|
|
|
+ boundaryGap: false,
|
|
|
|
+ data: dataX,
|
|
|
|
+ axisLabel: {//x轴刻度
|
|
|
|
+ textStyle: {
|
|
|
|
+ color: '#333'
|
|
|
|
+ },
|
|
|
|
+ rotate:'45',
|
|
|
|
+ formatter: function (value) {
|
|
|
|
+ //x轴的文字改为竖版显示
|
|
|
|
+ if(value.length>7){
|
|
|
|
+ return value.slice(0,7)+'...'
|
|
|
|
+ }
|
|
|
|
+ return value;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ axisLine: {//x轴
|
|
|
|
+ lineStyle:{
|
|
|
|
+ color:'#AAAAAA'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ yAxis: {
|
|
|
|
+ type: 'value',
|
|
|
|
+ axisLabel: {
|
|
|
|
+ formatter: '{value} %',
|
|
|
|
+ textStyle: {
|
|
|
|
+ color: '#333333'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ axisLine: {//y轴
|
|
|
|
+ show: false
|
|
|
|
+ },
|
|
|
|
+ axisTick: {
|
|
|
|
+ show: false
|
|
|
|
+ },
|
|
|
|
+ splitLine:{//分割线
|
|
|
|
+ lineStyle:{
|
|
|
|
+ color:'#EFF3FC'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ series: [
|
|
|
|
+ {
|
|
|
|
+ name: '甲级病历占比:',
|
|
|
|
+ type: 'line',
|
|
|
|
+ data: dataY,
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ };
|
|
|
|
+ myCharts.setOption(option);
|
|
}
|
|
}
|
|
//柱状图住院费用
|
|
//柱状图住院费用
|
|
function barChartPay(dataX,dataY){
|
|
function barChartPay(dataX,dataY){
|
|
@@ -144,6 +509,7 @@ function barChartPay(dataX,dataY){
|
|
color: ['#3398DB'],
|
|
color: ['#3398DB'],
|
|
tooltip: {
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
trigger: 'axis',
|
|
|
|
+ position: 'right',
|
|
axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
|
axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
|
type: 'line' // 默认为直线,可选为:'line' | 'shadow'
|
|
type: 'line' // 默认为直线,可选为:'line' | 'shadow'
|
|
}
|
|
}
|
|
@@ -165,7 +531,14 @@ function barChartPay(dataX,dataY){
|
|
textStyle: {
|
|
textStyle: {
|
|
color: '#333'
|
|
color: '#333'
|
|
},
|
|
},
|
|
- rotate:lengthNum>8?30:0
|
|
|
|
|
|
+ rotate:45,
|
|
|
|
+ formatter: function (value) {
|
|
|
|
+ //x轴的文字改为竖版显示
|
|
|
|
+ if(value.length>7){
|
|
|
|
+ return value.slice(0,7)+'...'
|
|
|
|
+ }
|
|
|
|
+ return value;
|
|
|
|
+ }
|
|
},
|
|
},
|
|
axisLine: {//x轴
|
|
axisLine: {//x轴
|
|
lineStyle:{
|
|
lineStyle:{
|
|
@@ -197,7 +570,7 @@ function barChartPay(dataX,dataY){
|
|
|
|
|
|
],
|
|
],
|
|
title:[{
|
|
title:[{
|
|
- text: '平均住院费用',
|
|
|
|
|
|
+ text: '分数',
|
|
top: 15,
|
|
top: 15,
|
|
left: 10,
|
|
left: 10,
|
|
textStyle: {
|
|
textStyle: {
|
|
@@ -208,9 +581,9 @@ function barChartPay(dataX,dataY){
|
|
}],
|
|
}],
|
|
series: [
|
|
series: [
|
|
{
|
|
{
|
|
- name: '平均住院费用',
|
|
|
|
|
|
+ name: '质控平均分',
|
|
type: 'bar',
|
|
type: 'bar',
|
|
- barWidth: lengthNum<5?'8%':'23%',
|
|
|
|
|
|
+ barWidth: '23%',
|
|
data: dataY
|
|
data: dataY
|
|
}
|
|
}
|
|
]
|
|
]
|
|
@@ -218,18 +591,109 @@ function barChartPay(dataX,dataY){
|
|
myCharts.setOption(option);
|
|
myCharts.setOption(option);
|
|
}
|
|
}
|
|
//柱状图住院日期
|
|
//柱状图住院日期
|
|
-function barChart(dataX,dataY){
|
|
|
|
|
|
+function barChart(data,type){
|
|
|
|
+ // console.log(data,type)
|
|
var myChart = echarts.init(document.getElementById('barChart'));
|
|
var myChart = echarts.init(document.getElementById('barChart'));
|
|
- var lengthNum = dataX.length;
|
|
|
|
$(window).resize(function(){
|
|
$(window).resize(function(){
|
|
myChart.resize()
|
|
myChart.resize()
|
|
});
|
|
});
|
|
|
|
+ var posList = [
|
|
|
|
+ 'left', 'right', 'top', 'bottom',
|
|
|
|
+ 'inside',
|
|
|
|
+ 'insideTop', 'insideLeft', 'insideRight', 'insideBottom',
|
|
|
|
+ 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'
|
|
|
|
+ ];
|
|
|
|
+ let app = {}
|
|
|
|
+ app.configParameters = {
|
|
|
|
+ rotate: {
|
|
|
|
+ min: -90,
|
|
|
|
+ max: 90
|
|
|
|
+ },
|
|
|
|
+ align: {
|
|
|
|
+ options: {
|
|
|
|
+ left: 'left',
|
|
|
|
+ center: 'center',
|
|
|
|
+ right: 'right'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ verticalAlign: {
|
|
|
|
+ options: {
|
|
|
|
+ top: 'top',
|
|
|
|
+ middle: 'middle',
|
|
|
|
+ bottom: 'bottom'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ position: {
|
|
|
|
+ options: echarts.util.reduce(posList, function (map, pos) {
|
|
|
|
+ map[pos] = pos;
|
|
|
|
+ return map;
|
|
|
|
+ }, {})
|
|
|
|
+ },
|
|
|
|
+ distance: {
|
|
|
|
+ min: 0,
|
|
|
|
+ max: 100
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ app.config = {
|
|
|
|
+ rotate: 90,
|
|
|
|
+ align: 'left',
|
|
|
|
+ verticalAlign: 'middle',
|
|
|
|
+ position: 'insideBottom',
|
|
|
|
+ distance: 15,
|
|
|
|
+ onChange: function () {
|
|
|
|
+ var labelOption = {
|
|
|
|
+ normal: {
|
|
|
|
+ rotate: app.config.rotate,
|
|
|
|
+ align: app.config.align,
|
|
|
|
+ verticalAlign: app.config.verticalAlign,
|
|
|
|
+ position: app.config.position,
|
|
|
|
+ distance: app.config.distance
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ myChart.setOption({
|
|
|
|
+ series: [{
|
|
|
|
+ label: labelOption
|
|
|
|
+ }, {
|
|
|
|
+ label: labelOption
|
|
|
|
+ }, {
|
|
|
|
+ label: labelOption
|
|
|
|
+ }, {
|
|
|
|
+ label: labelOption
|
|
|
|
+ }]
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ var labelOption = {
|
|
|
|
+ show: false,
|
|
|
|
+ position: app.config.position,
|
|
|
|
+ distance: app.config.distance,
|
|
|
|
+ align: app.config.align,
|
|
|
|
+ verticalAlign: app.config.verticalAlign,
|
|
|
|
+ rotate: app.config.rotate,
|
|
|
|
+ formatter: '{c} {name|{a}}',
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ rich: {
|
|
|
|
+ name: {
|
|
|
|
+ textBorderColor: '#fff'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ let dataX = []
|
|
|
|
+ let data1 = []
|
|
|
|
+ let data2 = []
|
|
|
|
+ let data3 = []
|
|
|
|
+ for(let i = 0;i < data.length;i++){
|
|
|
|
+ dataX.push(data[i].name)
|
|
|
|
+ data1.push(data[i].averageValue)//本月
|
|
|
|
+ data2.push(data[i].lastAverageValue)//本年
|
|
|
|
+ data3.push(data[i].lastYearAverageValue)//去年本月
|
|
|
|
+ }
|
|
option = {
|
|
option = {
|
|
- color: ['#3398DB'],
|
|
|
|
|
|
+ color: ['#5A8EEE', '#FAD336', '#37CBCB'],
|
|
tooltip: {
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
trigger: 'axis',
|
|
- axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
|
|
|
- type: 'line' // 默认为直线,可选为:'line' | 'shadow'
|
|
|
|
|
|
+ axisPointer: {
|
|
|
|
+ type: 'shadow'
|
|
}
|
|
}
|
|
},
|
|
},
|
|
grid: {
|
|
grid: {
|
|
@@ -238,24 +702,62 @@ function barChart(dataX,dataY){
|
|
bottom: '3%',
|
|
bottom: '3%',
|
|
containLabel: true
|
|
containLabel: true
|
|
},
|
|
},
|
|
|
|
+ title:[{
|
|
|
|
+ text: slideType==1?'天数':'元',
|
|
|
|
+ top: 15,
|
|
|
|
+ left: 10,
|
|
|
|
+ textStyle: {
|
|
|
|
+ fontSize: 14,
|
|
|
|
+ color:'#666666',
|
|
|
|
+ fontWeight: 400
|
|
|
|
+ }
|
|
|
|
+ }],
|
|
|
|
+ legend: {
|
|
|
|
+ itemWidth :10,
|
|
|
|
+ itemHeight :10,
|
|
|
|
+ right:15,
|
|
|
|
+ top:15,
|
|
|
|
+ selectedMode:false,
|
|
|
|
+ formatter: function (name) {
|
|
|
|
+ return name;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ toolbox: {
|
|
|
|
+ show: false,
|
|
|
|
+ orient: 'vertical',
|
|
|
|
+ left: 'right',
|
|
|
|
+ top: 'center',
|
|
|
|
+ feature: {
|
|
|
|
+ mark: {show: true},
|
|
|
|
+ dataView: {show: true, readOnly: false},
|
|
|
|
+ magicType: {show: true, type: ['line', 'bar', 'stack', 'tiled']},
|
|
|
|
+ restore: {show: true},
|
|
|
|
+ saveAsImage: {show: true}
|
|
|
|
+ }
|
|
|
|
+ },
|
|
xAxis: [
|
|
xAxis: [
|
|
{
|
|
{
|
|
type: 'category',
|
|
type: 'category',
|
|
- data: dataX,
|
|
|
|
- axisTick: {
|
|
|
|
- alignWithLabel: true
|
|
|
|
- },
|
|
|
|
|
|
+ axisTick: {show: false},
|
|
|
|
+ data: dataX,
|
|
axisLabel: {//x轴刻度
|
|
axisLabel: {//x轴刻度
|
|
textStyle: {
|
|
textStyle: {
|
|
color: '#333'
|
|
color: '#333'
|
|
},
|
|
},
|
|
- rotate:lengthNum>8?30:0
|
|
|
|
|
|
+ rotate:'45',
|
|
|
|
+ formatter: function (value) {
|
|
|
|
+ //x轴的文字改为竖版显示
|
|
|
|
+ if(value.length>7){
|
|
|
|
+ return value.slice(0,7)+'...'
|
|
|
|
+ }
|
|
|
|
+ return value;
|
|
|
|
+ }
|
|
},
|
|
},
|
|
axisLine: {//x轴
|
|
axisLine: {//x轴
|
|
lineStyle:{
|
|
lineStyle:{
|
|
color:'#AAAAAA'
|
|
color:'#AAAAAA'
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ },
|
|
}
|
|
}
|
|
],
|
|
],
|
|
yAxis: [
|
|
yAxis: [
|
|
@@ -267,43 +769,43 @@ function barChart(dataX,dataY){
|
|
axisTick: {
|
|
axisTick: {
|
|
show: false
|
|
show: false
|
|
},
|
|
},
|
|
- axisLabel: {//y轴刻度
|
|
|
|
- textStyle: {
|
|
|
|
- color: '#333333'
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
splitLine:{//分割线
|
|
splitLine:{//分割线
|
|
lineStyle:{
|
|
lineStyle:{
|
|
color:'#EFF3FC'
|
|
color:'#EFF3FC'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
],
|
|
],
|
|
- title:[{
|
|
|
|
- text: '平均住院日',
|
|
|
|
- top: 15,
|
|
|
|
- left: 10,
|
|
|
|
- textStyle: {
|
|
|
|
- fontSize: 14,
|
|
|
|
- color:'#666666',
|
|
|
|
- fontWeight: 400
|
|
|
|
- }
|
|
|
|
- }],
|
|
|
|
series: [
|
|
series: [
|
|
{
|
|
{
|
|
- name: '平均住院日',
|
|
|
|
|
|
+ name: type==1?'上月':'',
|
|
type: 'bar',
|
|
type: 'bar',
|
|
- barWidth: lengthNum<5?'8%':'23%',
|
|
|
|
- data: dataY
|
|
|
|
|
|
+ barGap: 0,
|
|
|
|
+ label: labelOption,
|
|
|
|
+ barWidth: '15%',
|
|
|
|
+ data: type==1?data2:[]
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: type==1?'去年本月':'去年',
|
|
|
|
+ type: 'bar',
|
|
|
|
+ label: labelOption,
|
|
|
|
+ barWidth: '15%',
|
|
|
|
+ data: data3
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: type==1?'本月':'本年',
|
|
|
|
+ type: 'bar',
|
|
|
|
+ label: labelOption,
|
|
|
|
+ barWidth: '15%',
|
|
|
|
+ data: data1
|
|
}
|
|
}
|
|
]
|
|
]
|
|
};
|
|
};
|
|
myChart.setOption(option);
|
|
myChart.setOption(option);
|
|
-
|
|
|
|
}
|
|
}
|
|
//空心饼图
|
|
//空心饼图
|
|
function emptyCircle(data){
|
|
function emptyCircle(data){
|
|
|
|
+ // console.log(data,1111111111)
|
|
var myChart = echarts.init(document.getElementById('emptyCircle'));
|
|
var myChart = echarts.init(document.getElementById('emptyCircle'));
|
|
$(window).resize(function(){
|
|
$(window).resize(function(){
|
|
myChart.resize()
|
|
myChart.resize()
|
|
@@ -312,7 +814,6 @@ function emptyCircle(data){
|
|
let title = '总量';
|
|
let title = '总量';
|
|
let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
|
|
let color = ['#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336','#F2637B','#975FE4', '#399FFF', '#37CBCB', '#4CCB73','#FAD336'];
|
|
let echartData = data;
|
|
let echartData = data;
|
|
- console.log(echartData)
|
|
|
|
let total = 0;
|
|
let total = 0;
|
|
for(let i = 0;i < echartData.length;i++){
|
|
for(let i = 0;i < echartData.length;i++){
|
|
total += echartData[i].num
|
|
total += echartData[i].num
|
|
@@ -398,15 +899,110 @@ function emptyCircle(data){
|
|
};
|
|
};
|
|
myChart.setOption(option);
|
|
myChart.setOption(option);
|
|
}
|
|
}
|
|
|
|
+function emptyCircleB(data){
|
|
|
|
+ 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 = 0;
|
|
|
|
+ for(let i = 0;i < echartData.length;i++){
|
|
|
|
+ total += echartData[i].num
|
|
|
|
+ }
|
|
|
|
+ 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: '#333',
|
|
|
|
+ fontWeight: 'bold',
|
|
|
|
+ padding: [10, 0]
|
|
|
|
+ },
|
|
|
|
+ name: {
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ fontWeight: 'normal',
|
|
|
|
+ color: '#777',
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }],
|
|
|
|
+ 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: 2
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ 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 queList(data){
|
|
function queList(data){
|
|
- let strAll = '',tmp = `
|
|
|
|
- <tr class="thead">
|
|
|
|
- <td class="td01">排名</td>
|
|
|
|
- <td class="td02">缺陷名称</td>
|
|
|
|
- <td class="td03">数量</td>
|
|
|
|
- <td class="td04">占比</td>
|
|
|
|
- </tr>`
|
|
|
|
|
|
+ let strAll = '',tmp = `mm
|
|
|
|
+ <tr class="thead">
|
|
|
|
+ <td class="td01">排名</td>
|
|
|
|
+ <td class="td02">缺陷详情</td>
|
|
|
|
+ <td class="td03">数量</td>
|
|
|
|
+ <td class="td04">占比</td>
|
|
|
|
+ </tr>`
|
|
for(let i = 0;i < data.length;i++){
|
|
for(let i = 0;i < data.length;i++){
|
|
strAll += `
|
|
strAll += `
|
|
<tr>
|
|
<tr>
|
|
@@ -426,14 +1022,45 @@ function panDetail(data){
|
|
for(let i = 0;i < data.length;i++){
|
|
for(let i = 0;i < data.length;i++){
|
|
strAll += `
|
|
strAll += `
|
|
<tr class="explainLi">
|
|
<tr class="explainLi">
|
|
- <td class="deptName"><i class="tip" style="background-color:${color[i]}"></i>${data[i].name}</td>
|
|
|
|
|
|
+ <td class="deptName" title="${data[i].name}">
|
|
|
|
+ <p class="smp"><i class="tip" style="background-color:${color[i]}"></i>${data[i].name}</p>
|
|
|
|
+ </td>
|
|
<td class="deptNum">${data[i].num}</td>
|
|
<td class="deptNum">${data[i].num}</td>
|
|
<td class="percent">(${data[i].percentStr})</td>
|
|
<td class="percent">(${data[i].percentStr})</td>
|
|
</tr>
|
|
</tr>
|
|
`
|
|
`
|
|
}
|
|
}
|
|
- $(".explainPan table").html(strAll);
|
|
|
|
|
|
+ $(".explainPanT table").html(strAll);
|
|
$(".explainPan").css({
|
|
$(".explainPan").css({
|
|
marginTop:-($(".explainPan").height()/2-20)+'px'
|
|
marginTop:-($(".explainPan").height()/2-20)+'px'
|
|
})
|
|
})
|
|
|
|
+}
|
|
|
|
+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 += `
|
|
|
|
+ <tr class="explainLi">
|
|
|
|
+ <td class="deptName" title="${data[i].name}">
|
|
|
|
+ <p><i class="tip" style="background-color:${color[i]}"></i>${data[i].name}</p>
|
|
|
|
+ </td>
|
|
|
|
+ <td class="deptNum">${data[i].num}</td>
|
|
|
|
+ <td class="percent">(${data[i].percentStr})</td>
|
|
|
|
+ </tr>
|
|
|
|
+ `
|
|
|
|
+ }
|
|
|
|
+ $(".explainPanB table").html(strAll);
|
|
|
|
+ $(".explainPan").css({
|
|
|
|
+ marginTop:-($(".explainPan").height()/2-20)+'px'
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+//时间获取
|
|
|
|
+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)
|
|
}
|
|
}
|