var reqList = [],reqLists = [[],[],[],[]]; //记录请求的参数和url,用于后退时使用 var colors={"0":"#5b9db5","1":"#ed7d31","2":"#a5a5a5", "3":"#ffc000","4":"#44c274","5":"#70ad47", "6":"#255e91","7":"#9e480e","8":"#7e7e7e","9":"#997300","10":"#264478","11":"#43682b","12":"#5b9db5"} Vue.use(Vuedals.default); new Vue({ el: "#main", data: { isloading:false, //加载中 pageData4:{}, pageData3:{}, pageData2:{}, pageData1:{}, pageData:{}, tabledata01:[], tabledata02:[], tabledata1:[], tabledata2:[], hastopbar1:true, hastopbar2:true, slaveKey1_1:"", slaveKey1_2:"", reqListLength8:1, reqListLength9:1, reqListLength10:1, reqListLength11:1, ttab:1, tbtab:1, ltabList:[{},{indexNames:{'turnUpList':"上转人次",'rehabilitationList':'康复下转人次'},xDatas:{},yDatas:{},names:[]}, {indexNames:{'totalServiceList':"总服务人次"},xDatas:{},yDatas:{},names:[]},], selDateType:undefined, // 1-日,2-周, 3-月 informationShow:true, information:{code:"1",title:"专病分析",name:"zbfx",tip:"专病分析为统计当前年度至今各个专病康复管理业务动态"}, optionsName:[], valueName:"", ptab:1, //请求页面所需参数 levelList:[{level:"4",areaLevel:"2"},{level:"3",areaLevel:"3"},{level:"2",areaLevel:"4"}], //两种搜索,地区等级对比 areaLevel:"", // 2、市,3、区,4、社区,5、团队\ initareaLevel:"", initlevel: '', initarea: '', level: '', area: '', areaTitle: '', lowLevel:3, initlowLevel:3, selectedDateType: 1, //折线图坐标值1-日,2-周,3-月 lowCode: '', chooseYear: '', start: "", end: "", userRole: '', reqListLength:1, activeAreaIndex:0, hopitalList:[], chopitalList:[], hospitalItem:{}, hospitalCode:"", tabnumber:3, activeIndex:0, isHospital:false, //判断是否切换到医院权限 }, components: { vuedals: Vuedals.Component }, mounted: function () { var vm=this //初始化数据 initData(vm); vm.bindEvent() }, watch:{ areaTitle:function(val){ //更新区域名称 EventBus.$emit('update-area-name', { 'areaName': val }); }, chooseYear:function(val){ //更新年份 EventBus.$emit('update-statistics-year', { 'selectDate': val }); }, }, methods: { getData:function(isNext,index){ //是否下转 var vm = this var params={ areaLevel: vm.areaLevel, level: vm.level, area: vm.area, endDate: vm.end, startDate: vm.start, lowLevel: vm.lowLevel, index:index } if(index){ loadData([index], vm); }else{ loadData([0,1,2,3,4,5,6,7,8,9,10,11], vm); //刷新数据 } if(isNext){ //存储请求所带的参数 reqList.push(params); if(index){ reqLists[index-8].push(params) vm["reqListLength"+index] = reqLists[index-8].length+1 } } }, //表格tab切换/下转 getnewdata:function(arg,index){ var vm = this if(arg.level){ vm.level = arg.level vm.areaLevel = _.find(vm.levelList,{level:vm.level}).areaLevel } if(arg.area){ vm.area = arg.area } if(arg.areaTitle){ vm.areaTitle = arg.areaTitle } if(arg.lowLevel){ vm.lowLevel=arg.lowLevel }else{ if(vm.areaLevel){ vm.lowLevel=arg.area == '350200' ? 3 : vm.area.length == 6 ? 4 : 5; }else{ vm.lowLevel = arg.lowLevel || "" } } vm.getData(arg.level,index) //有传level,说明是下转 }, getnewdata1:function(arg){ var vm = this if(vm.hastopbar1){ //服务项时 vm.hastopbar1 = false vm.slaveKey1_1 = arg.area vm.area=vm.initarea vm.areaLevel=vm.initareaLevel vm.level=vm.initlevel vm.lowLevel = vm.initlowLevel vm.getData(true,8) }else{ vm.getnewdata(arg,8) } }, getnewdata2:function(arg){ var vm = this if(vm.hastopbar2){ //服务项时 vm.hastopbar2 = false vm.slaveKey1_2 = arg.area vm.area=vm.initarea vm.areaLevel=vm.initareaLevel vm.level=vm.initlevel vm.lowLevel = vm.initlowLevel vm.getData(true,9) }else{ vm.getnewdata(arg,9) } }, getnewdata01:function(arg){ var vm = this vm.getnewdata(arg,10) }, getnewdata02:function(arg){ var vm = this vm.getnewdata(arg,11) }, backClickHandel:function(index,lIndex,refIndex){ var vm=this var hasIndex = _.findLastIndex(reqList,{index:index}) reqList.splice(hasIndex,1); var preInfo = reqLists[lIndex].pop(); var info = reqLists[lIndex][reqLists[lIndex].length - 1]; if(reqLists[lIndex].length==0){ if(refIndex=='1'||refIndex=='2'){ vm["hastopbar"+refIndex] = true vm["slaveKey1_"+refIndex] = "" info = preInfo }else{ info = reqList[0] } } vm.areaLevel = info.areaLevel; vm.level = info.level; vm.area = info.area; vm.lowLevel = info.lowLevel; vm["reqListLength"+index] = reqLists[lIndex].length+1 vm.getData(false,index) vm.$refs["tableRef_"+refIndex].changeTab({level:vm.level,lowlevel:vm.lowLevel}) //表格tab }, backClick2:function(){ var vm=this vm.backClickHandel(10,2,'01') }, backClick3:function(){ var vm=this vm.backClickHandel(11,3,'02') }, backClick0:function(){ var vm=this vm.backClickHandel(8,0,'1') }, backClick1:function(){ var vm=this vm.backClickHandel(9,1,'2') }, //时间选择 changeDate: function () { var vm=this //搜索时,取消下转记录 vm.area=vm.initarea vm.areaLevel=vm.initareaLevel vm.level=vm.initlevel vm.lowLevel = vm.initlowLevel reqHistoryInit(vm) vm.getData(true) vm.initTable() }, //获取疾病筛查表 getOptionsName:function(){ var vm=this vm.optionsName = [{code:"",name:"全部病种"}] params = { area:vm.initarea, level:vm.initareaLevel }; statisticAPI.specialistAnalysisDiseaseType(params).then(function(res) { if(res.status == 200) { vm.optionsName = [{code:"",name:"全部病种("+res.data.length+"个)"}] vm.optionsName=vm.optionsName.concat(res.data) } else { vm.$message.error(res.msg) } }) }, //筛查表切换 seleName:function(){ var vm=this vm.changeDate() }, //切换line showTab:function(ptab){ var vm=this if(ptab){ vm.ptab=ptab } setTimeout(function(){ EventBus.$emit("draw-line-chart", { panelName : "分级诊疗情况", quotaNames : vm.ltabList[vm.ptab].names, xData : vm.ltabList[vm.ptab].xDatas[0], yDatas : vm.ltabList[vm.ptab].yDatas, colors : ["#17b3ec",'#FF9526'], nowlineid : 'lineChart'+vm.ptab, noDateType: true, chartheight:"260", unit:"人", noshowDate:false, }); },300) }, showtTab:function(ttab){ var vm=this }, showtbTab:function(tbtab){ var vm=this }, backClick:function(){ var vm=this if(vm.isHospital){ initData(vm) }else{ history.go(-1); } // if (reqList.length == 1) { // history.go(-1); // } else { // var lastInfo = reqList[reqList.length-1] // if(lastInfo.index){ // var idx = lastInfo.index - 8 // vm["backClick"+idx]() // } // } }, bindEvent:function(){ var vm=this //监听后退按钮的操作 EventBus.$on("back-click", function (arg) { EventBus.$emit('update-statistics-time', {}); //更新统计时间 vm.backClick() }); //监听页面刷新 EventBus.$on("refresh-click", function (arg) { EventBus.$emit('update-statistics-time', {}); //更新统计时间 initData(vm) }); //弹出筛选框 EventBus.$on('filter-click', function(arg) { //弹框显示筛选条件 Vuedals.Bus.$emit('new', { title: '条件筛选', onClose:function(data){ vm.chooseYear = data.chooseYear; if(vm.chooseYear){ vm.selDateType = undefined vm.end = getEndDate(vm.chooseYear) vm.start = getStartDate(vm.chooseYear) }else{ vm.selDateType = "按"+data.dimensionVal vm.end = getDateBefore(0) if(data.dimensionVal == '日'){ vm.start = getDateBefore(1) }else if(data.dimensionVal == '周'){ vm.start = getDateBefore(7) }else if(data.dimensionVal == '月'){ vm.start = getDateBefore(30) } } vm.changeDate() EventBus.$emit('update-statistics-time', {});//更新统计时间 //更新维度名称 EventBus.$emit('update-dimension-name', { "dimensionVal" : vm.selDateType }); }, component: 'special-filter', props: { selectedYear: vm.chooseYear, minYear:2020, dimensionValList:['日','周','月'], } }); }); $("#main").removeClass("c-hide"); }, initTable:function(){ var vm=this var tabList1 = [{name:"各区",level:"4",lowlevel:"3",isShow:true},{name:"医院",level:"3",lowlevel:"4",isShow:true},{name:"团队",level:"2",lowlevel:"5",isShow:true}] var tabList2 = [{name:"各区",level:"4",lowlevel:"3",isShow:true},{name:"社区",level:"3",lowlevel:"4",isShow:true},{name:"团队",level:"2",lowlevel:"5",isShow:true}] var tabList01 = JSON.parse(JSON.stringify(tabList1)),tabList02 = JSON.parse(JSON.stringify(tabList2)) vm.$refs.tableRef_01.initTable({ //表格表头 tabList:tabList01, headers:[{thead:"地区",param:"name",canclick:true},{thead:"共管患者数",param:"coManagementNum"}, {thead:"转诊人数",param:"referralNum"},{thead:"下转人数",param:"rehabilitationNum"},{thead:"总服务人数",param:"totalServiceNum"}], tabnumber:vm.tabnumber, }) vm.$refs.tableRef_02.initTable({ //表格表头 tabList:tabList02, headers:[{thead:"地区",param:"name",canclick:true},{thead:"共管患者数",param:"coManagementNum"}, {thead:"转诊人数",param:"referralNum"},{thead:"下转人数",param:"rehabilitationNum"},{thead:"总服务人数",param:"totalServiceNum"}], tabnumber:vm.tabnumber, }) var tabItem = {name:"服务项名称"} tabList1.splice(3-vm.tabnumber,0,tabItem) tabList2.splice(3-vm.tabnumber,0,tabItem) vm.$refs.tableRef_1.initTable({ //表格表头 tabList:tabList1, headers:[{thead:"服务项名称",param:"name",canclick:true},{thead:"合计",param:"num"}], tabnumber:vm.tabnumber+1, }) vm.$refs.tableRef_2.initTable({ //表格表头 tabList:tabList2, headers:[{thead:"服务项名称",param:"name",canclick:true},{thead:"合计",param:"num"}], tabnumber:vm.tabnumber+1, }) }, comfireHospital:function(){ var vm = this if(vm.hospitalCode){ vm.loadding = true vm.isHospital = true //level:2、市,3、区,4、社区,5、团队 vm.initareaLevel = vm.areaLevel = vm.hospitalCode == '350200' ? 2 : vm.hospitalCode.length == 6 ? 3 : 4; vm.initlevel = vm.level = vm.hospitalCode == '350200' ? 4 : vm.hospitalCode.length == 6 ? 3 : 2; vm.initlowLevel = vm.lowLevel = vm.hospitalCode == '350200' ? 3 : vm.hospitalCode.length == 6 ? 4 : 5; vm.initarea =vm.area = vm.hospitalCode; vm.areaTitle = vm.hospitalItem.name; if(vm.activeAreaIndex=="1"){ //0:等级医院 1社区医院 vm.tbtab = 2 }else{ vm.tbtab = 1 } vm.tabnumber=vm.areaLevel==4?1:vm.areaLevel==3?2:3 //表格显示的tab数 //初始化时间 vm.chooseYear = getSignDate() vm.selDateType = undefined vm.end = getEndDate(vm.chooseYear) vm.start = getStartDate(vm.chooseYear) vm.changeDate() vm.getOptionsName() //获取搜索疾病列表 vm.initTable() } }, hopitalListShow:function(){ var vm = this //弹框显示筛选条件 Vuedals.Bus.$emit('new', { title: '条件筛选', onClose:function(data){ if(data){ vm.hospitalItem = data.hospitalItem vm.hospitalCode = data.hospitalCode vm.activeAreaIndex = data.activeName vm.comfireHospital() } }, component: 'hospital-filter', props: { chopitalList:vm.chopitalList, hopitalList:vm.hopitalList, } }); } } }) function initData(vm) { //获得缓存中缓存的角色权限 var userRole = window.sessionStorage.getItem("selectedRole"); if (!userRole) { return false; } vm.userRole = JSON.parse(userRole); //level:2、市,3、区,4、社区,5、团队 vm.initareaLevel = vm.areaLevel = vm.userRole.code == '350200' ? 2 : vm.userRole.code.length == 6 ? 3 : 4; vm.initlevel = vm.level = vm.userRole.code == '350200' ? 4 : vm.userRole.code.length == 6 ? 3 : 2; vm.initlowLevel = vm.lowLevel = vm.userRole.code == '350200' ? 3 : vm.userRole.code.length == 6 ? 4 : 5; vm.initarea =vm.area = vm.userRole.code; vm.areaTitle = vm.userRole.name; if(vm.initlevel==2){ if(vm.userRole.roleType == '2'){ vm.tbtab = 2 }else if(vm.userRole.roleType == '1'){ vm.tbtab = 1 } }else{ if(vm.isHospital){ vm.isHospital = false vm.hospitalCode = "" vm.hospitalItem = {} }else{ selectHospital(vm,1,'hopitalList') selectHospital(vm,2,'chopitalList') } } vm.tabnumber=vm.areaLevel==4?1:vm.areaLevel==3?2:3 //表格显示的tab数 //初始化时间 vm.chooseYear = getSignDate() vm.selDateType = undefined vm.end = getEndDate(vm.chooseYear) vm.start = getStartDate(vm.chooseYear) vm.changeDate() vm.getOptionsName() //获取搜索疾病列表 vm.initTable() } function reqHistoryInit(vm){ reqList = [] reqLists = [[],[],[],[]] _.each(reqLists,function(item,idx){ var index = 8+idx vm["reqListLength"+index] = item.length+1 }) vm.slaveKey1_1 = "" vm.slaveKey1_2 = "" vm.hastopbar1 = true vm.hastopbar2 = true } function initReqParams(vm) { var param = { startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, } var reqParam = [{ url: "/specialistStatistics/specialistAnalysisHead", //头部 reqType: 'get', data:{ diseaseType:vm.valueName, area: vm.area, level: vm.areaLevel, //2、市,3、区,4、社区,5、团队 }, },{ url: "/specialistStatistics/specialistAnalysisHeadCount", //头部统计 reqType: 'get', data:param, },{ url: "/specialistStatistics/diagnosisTreatment", //分级诊疗形式(转诊趋势) reqType: 'get', data:{ startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, interval:1, type:1, //转诊趋势 }, },{ url: "/specialistStatistics/diagnosisTreatment", //分级诊疗形式(服务人数) reqType: 'get', data:{ startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, interval:1, type:2, //服务人数 }, },{ url: "/specialistStatistics/diseaseTypeAnalysis", //疾病类型分析 reqType: 'get', data:param, },{ url: "/specialistStatistics/dailyHealthServices", //日常健康服务 reqType: 'get', data:param, },{ url: "/specialistStatistics/onlineDiagnosisTreatment", //在线诊疗情况 reqType: 'get', data:param, },{ url: "/specialistStatistics/rehabilitationPhoneRange", //电话/短信关怀率 reqType: 'get', data:param, },{ url: "/specialistStatistics/coManagementRehabilitation", //康复共管情况 reqType: 'get', data:{ startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, type:1, //等级医院 slaveKey1:vm.slaveKey1_1, lowLevel:vm.slaveKey1_1?vm.lowLevel:"" }, },{ url: "/specialistStatistics/coManagementRehabilitation", //康复共管情况 reqType: 'get', data:{ startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, type:2, //社区医院 slaveKey1:vm.slaveKey1_2, lowLevel:vm.slaveKey1_2?vm.lowLevel:"" }, },{ url: "/specialistStatistics/serviceRankingAnalysis", //-专病服务排名分析/医院总体服务情况 reqType: 'get', data:{ startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, type:1, lowLevel:vm.lowLevel }, },{ url: "/specialistStatistics/serviceRankingAnalysis", //-专病服务排名分析/医院总体服务情况 reqType: 'get', data:{ startDate: vm.start, endDate: vm.end, area: vm.area, level: vm.areaLevel, diseaseType:vm.valueName, type:2, lowLevel:vm.lowLevel }, }]; return reqParam; } function loadData(loadArr, vm) { //获取其他请求的参数 var reqParams = initReqParams(vm), reqPromise = [], newArr = []; //记录非顶部请求的请求数组 for (i = 0; i < loadArr.length; i++) { var j = loadArr[i]; var param = reqParams[j]; reqPromise.push(httpRequest.get(param.url, { data: param.data })); newArr.push(loadArr[i]); } vm.isloading=true if (reqPromise.length > 0) { Promise.all(reqPromise).then(function (ress) { var res1, res2, res3, res4, res5, res6, res7, res8, res9, res10, res11, res12; for (var i = 0; i < loadArr.length; i++) { var j = loadArr[i] + 1; if (j == 1) { res1 = ress[i]; } if (j == 2) { res2 = ress[i]; } if (j == 3) { res3 = ress[i]; } if (j == 4) { res4 = ress[i]; } if (j == 5) { res5 = ress[i]; } if (j == 6) { res6 = ress[i]; } if (j == 7) { res7 = ress[i]; } if (j == 8) { res8 = ress[i]; } if (j == 9) { res9 = ress[i]; } if (j == 10) { res10 = ress[i]; } if (j == 11) { res11 = ress[i]; } if (j == 12) { res12 = ress[i]; } } if(res1&& res1.status == 200){ vm.pageData=res1.data } if(res2&& res2.status == 200){ vm.pageData1=res2.data } if(res3&& res3.status == 200){ handleSecondPanelData(res3.data ,1, vm) } if(res4&& res4.status == 200){ handleSecondPanelData(res4.data ,2, vm) } if(res5&& res5.status == 200){ var barData = {rehabilitationNum:[],rehabilitationTimes:[]} _.each(res5.data,function(item,index){ barData.rehabilitationNum.push({ range:item.name, amount:item.num }) barData.rehabilitationTimes.push({ range:item.name, amount:item.times }) }) getBarData({elId:'barChart', data:barData, indexNames:{"rehabilitationNum":"下转人数","rehabilitationTimes":"下转人次"},selectedDateType:vm.selectedDateType,hasLegend:true,colors:["#17b3ec",'#20D7AD'],units:{"下转人数":"人","下转人次":"人次"}}) } if(res6&& res6.status == 200){ vm.pageData2=res6.data } if(res7&& res7.status == 200){ vm.pageData3=res7.data } if(res8&& res8.status == 200){ vm.pageData4=res8.data } if(res9&& res9.status == 200){ var data9 = _.map(res9.data,function(item){ item.num = item.num||item.amount||0 return item }) vm.tabledata1=listHandle(data9,"num"); } if(res10&& res10.status == 200){ var data10 = _.map(res10.data,function(item){ item.num = item.num||item.amount||0 return item }) vm.tabledata2=listHandle(data10,"num"); } if(res11&& res11.status == 200){ vm.tabledata01=listHandle(res11.data,"totalServiceNum"); } if(res12&& res12.status == 200){ vm.tabledata02=listHandle(res12.data,"totalServiceNum"); } vm.isloading=false }) } } function handleSecondPanelData(data,index, vm) { var xDatas = [], yDatas = [], names = [] for(var p in data){ names.push(vm.ltabList[index].indexNames[p]); xData = _.map(data[p], function(o){ return o.range; }); yData = _.map(data[p], function(o){ return o.amount; }); xDatas.push(xData); yDatas.push(yData); } vm.ltabList[index].xDatas = xDatas vm.ltabList[index].yDatas = yDatas vm.ltabList[index].names = names if(vm.ptab == index){ vm.showTab() } } function listHandle(list, sort){ var topArr = [],newList=[]; if(list.length==1&&!list[0].name){ list=[] } topArr = soreRank(getKeyValueArr(list, sort||'total')); newList = _.map(list, function(o, index){ o.rank=topArr[index] return o }); return newList } function selectHospital(vm,index,param) { var url = "/specialistStatistics/selectHospital", params = { town:vm.initarea, level:index }; statisticAPI.selectHospital(params).then(function(res) { if(res.status == 200) { vm[param] = res.data } else { vm.$message.error(res.msg) } }) }