|
@@ -0,0 +1,446 @@
|
|
|
+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 echarts = require('echarts');
|
|
|
+const {post,setCookie,delCookie,getCookie} = require('../js/utils.js');
|
|
|
+let payMoney = [],dayLis = [],dateType = 1,slideType = 1;
|
|
|
+$(function(){
|
|
|
+ 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()
|
|
|
+ })
|
|
|
+})
|
|
|
+//判断有无某一权限
|
|
|
+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:'#5A8EEE',
|
|
|
+ color:'#fff'
|
|
|
+ }).siblings().css({
|
|
|
+ color:'#5A8EEE',
|
|
|
+ backgroundColor:'#fff'
|
|
|
+ })
|
|
|
+ dateType = 1
|
|
|
+ getBarData(1)
|
|
|
+ })
|
|
|
+ $(".monthYear .year").click(function(){
|
|
|
+ $(this).css({
|
|
|
+ backgroundColor:'#5A8EEE',
|
|
|
+ color:'#fff'
|
|
|
+ }).siblings().css({
|
|
|
+ color:'#5A8EEE',
|
|
|
+ backgroundColor:'#fff'
|
|
|
+ })
|
|
|
+ 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 += `
|
|
|
+ <li class="partLi">
|
|
|
+ <div class="partIn">
|
|
|
+ <p class="top">${name}</p>
|
|
|
+ <p class="btm clearfix">
|
|
|
+ <img src="${url[i]}" alt="">
|
|
|
+ <span>${num}</span>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ `
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $(".partAll").html(dom)
|
|
|
+}
|
|
|
+//获取图表数据
|
|
|
+function getBarData(type){
|
|
|
+ if(hasData('FUNC000049')){
|
|
|
+ // post('/consoleByDept/leaveHosCountByDept',{//出院人数统计
|
|
|
+ post('/console/leaveHosCount',{//出院人数统计
|
|
|
+ "type": type||1//1月2年
|
|
|
+ }).then((res)=>{
|
|
|
+ let data = res.data;
|
|
|
+ if(data.code == 0){
|
|
|
+ // console.log(data)
|
|
|
+ let result1 = data.data['出院人数统计']||[]
|
|
|
+ personNum(result1)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(hasData('FUNC000050')){
|
|
|
+ // post('/consoleByDept/mrCountByDept',{//质控病历统计
|
|
|
+ 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('/consoleByDept/entryCountGroupByCaseAndDept',{//各模块缺陷占比排行
|
|
|
+ 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('/consoleByDept/entryCountGroupByEntryAndDept',{//条目缺陷占比
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+//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')
|
|
|
+ }
|
|
|
+ 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 = ['#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 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){
|
|
|
+ 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++){
|
|
|
+ strAll += `
|
|
|
+ <tr>
|
|
|
+ <td style="text-align:center;"><i style="background:${i < 3?'#bea571':'#eff3fc'};color:${i < 3?'#fff':'#999'};">${i+1}</i></td>
|
|
|
+ <td>${data[i].name}</td>
|
|
|
+ <td>${data[i].num}</td>
|
|
|
+ <td>${data[i].percentStr}</td>
|
|
|
+ </tr>
|
|
|
+ `
|
|
|
+ }
|
|
|
+ $(".qtable").html(tmp+strAll)
|
|
|
+}
|
|
|
+//饼图列表注释渲染
|
|
|
+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)
|
|
|
+}
|