var self, userRole, scroller, initLevel, initCode, initTitle, level, code, areaTitle, tagCode = 1, //顶部各个tag标签对应的值 sumType = 1, //记录从筛选页面选择的统计维度 1-订单统计,2-费用统计,3-配送统计,4-年龄统计 disease = "", //疾病类型 lowlevel, dateType = 1, //折线图坐标值1-日,2-周,3-月 startDate = "", endDate = ""; var reqParam = []; //请求参数 var reqList = []; //请求的链接数据,根据这些信息后退的时候使用 mui.init(); mui.plusReady(function(){ var self = plus.webview.currentWebview(); userRole = JSON.parse(plus.storage.getItem("selectedRole")); initLevel = level = userRole.code == CITY_CODE ? 4 : userRole.code.length==6 ? 3 : 2; lowlevel = level - 1; initCode = code = userRole.code; initTitle = areaTitle = userRole.name; $("#areaTitle").text(areaTitle); $("#header-subtitle").text("订单统计"); showLabs(); initReqParams(); //现获得页面请求的接口参数 //记录返回链接信息 reqList.push({ level: level, lowlevel: lowlevel, code: code, areaTitle: areaTitle, sumType: sumType, tagCode: tagCode, req: reqParam }); loadData([0,1,2]); initScroller(); shaixuanInit(self); bindEvents(); }); function initReqParams(){ //sumType: 1-订单统计,2-费用统计,3-配送统计,4-年龄统计 switch(sumType){ case 1: //tagCode: 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消 reqParam = [{ url: "/statistics/getPrescriptionCount", reqType: 'get', data: {level: level, area: code, disease: disease} },{ url: "/statistics/getPrescriptionTotalHistogram", reqType: 'get', data: {level: level, area: code, disease: disease, type: tagCode, interval: dateType} },{ url: "/statistics/getPrescriptionTotalLowLevel", reqType: 'get', data: {level: level, lowlevel: lowlevel, area: code, disease: disease, type: tagCode} }]; break; case 2: //dateType: 折线图坐标值1-日,2-周,3-月 //tagCode: 1.总量,2.平均值 getStartDate(3, dateType); getEndDate(); reqParam = [{ url: "/statistics/getPrescriptionCost", reqType: 'get', data: {level: level, area: code, disease: disease} },{ url: "/statistics/getPrescriptionCostAvgLine", reqType: 'get', data: {level: level, area: code, disease: disease, type: dateType, startDate: startDate, endDate: endDate} },{ url: "/statistics/getPrescriptionCostLowLevel", reqType: 'get', data: {level: level, lowlevel: lowlevel, area: code, disease: disease, type: tagCode} }]; break; case 3: //tagCode: 1.自取,2.快递配送,3.健管师配送 reqParam = [{ url: "/statistics/getPrescriptionDispatchingTotal", reqType: 'get', data: {level: level, area: code, disease: disease} },{ url: "/statistics/getPrescriptionDispatchingHistogram", reqType: 'get', data: {level: level, area: code, disease: disease, type: tagCode, interval: dateType} },{ url: "/statistics/getPrescriptionDispatchingLowLevel", reqType: 'get', data: {level: level, lowlevel: lowlevel, area: code, disease: disease, type: tagCode} }]; break; case 4: reqParam = [{ url: "/statistics/getPrescriptionAgeTotal", reqType: 'get', data: {level: level, area: code, disease: disease} },{ url: "/statistics/getPrescriptionAgeHistogram", reqType: 'get', data: {level: level, area: code, disease: disease} },{ url: "/statistics/getPrescriptionAgeLowLevel", reqType: 'get', data: {level: level, lowlevel: lowlevel, area: code, disease: disease} }]; break; default: reqParam = []; break; }; } /* * 加载页面数据 * @param loadArr array 记录需要请求的区域0-顶部,1-中间,2-底部 */ function loadData(loadArr){ plus.nativeUI.showWaiting(); getJieZhiTime(); var reqPromise = []; for(var i=0; i 7 ){ var dataZoom_end = 100-(6/len)*100; }else{ var dataZoom_end = 0; } //初始给定第一版页面中时间区间 if(dateType == 3){ var d1 = xAxisData[len - lastIndex], d2 = xAxisData[len -1]; $("#startValue").text(d1.substr(0,4)+"年"+d1.substr(5,2)+"月"); $("#endValue").text(d2.substr(0,4)+"年"+d2.substr(5,2)+"月"); }else{ $("#startValue").text(xAxisData[len - lastIndex]); $("#endValue").text(xAxisData[len -1]); } option.dataZoom = [{//给x轴设置滚动条 show: false, start: dataZoom_end, end: 100, type: 'slider', zoomLock: true, },{ //下面这个属性是内容区域配置 start: dataZoom_end, end: 100, type: 'inside', zoomLock: true, }]; } // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); if(sumType == 1 || sumType == 3){ myChart.on('click',function(a,b){ var arg = { date: a.name, dateType: dateType, disease: disease, area: code, areaTitle: areaTitle } if(sumType == 1){ arg.status = tagCode; } if(sumType == 3){ arg.status = 2; // 配送统计的默认是已完成的订单 arg.expressType = tagCode; } openWebview("../../prescription/html/prescription-records.html", arg); }); } } //绘制折线图 function drawChart(data){ var recordCount = 10;//一页显示几条数据 var allData = data.reverse(); var allRecordData = _.map(allData, function(o){ return o.avg; }) var dateArr = _.map(allData, function(o){ return o.date.substring(5); }); var resultData = _.groupBy(allRecordData,function(item,i){ return Math.floor(i/recordCount) }); var dateArrData = _.groupBy(dateArr,function(item,i){ return Math.floor(i/recordCount) }); //以下为折线图处理 var gnum = Math.ceil(allRecordData.length / recordCount); var HandStartX,HandStartY,HandEndX,HandEndY,CountX,CountY,startPos,isScrolling, number=allRecordData.length, times=allRecordData.length%recordCount; var canvasStr = '
'; for(var x in resultData){ canvasStr = ''+canvasStr; } $(".l-zxt-inner").html(canvasStr); var dateType = $(".div-btn-group .div-btn.active").attr("data-id"); window.setTimeout(function() { for(var x in resultData){ // var startDay = new Date(getDateBefore(times-1)); var resultDateArr = dateArrData[x].reverse(); var yAxis = maxData(resultData[x]);//求数据的最大值 $('#wcMotion'+x).wcChart({ height: 200, // width and height must be set if change yAxis:yAxis, day: new Date(startDate), points: [], dateType:dateType, dateArr:resultDateArr, data: resultData[x].reverse(), fill: {gradient: [["#17B3EC",.1], ["#17B3EC",.5]], gradientAngle: Math.PI * -45/180}, animation: null, // 修复bug#3298 【医生端】总体分析排版优化。(vivo手机) event: 'tap' }); if(x==0){ $('#wcMotion'+x).show(); } times+=recordCount; //折线图画布添加左滑和右滑效果 var wcMotion = document.getElementById('wcMotion'+x); wcMotion.addEventListener('touchstart', function(event) { HandStartX=event.touches[0].clientX; HandStartY=event.touches[0].clientY; //touches数组对象获得屏幕上所有的touch,取第一个touch var touch = event.targetTouches[0]; //取第一个touch的坐标值 startPos = {x:touch.pageX,y:touch.pageY,time:+new Date}; //这个参数判断是垂直滚动还是水平滚动 isScrolling = 0; }, false); wcMotion.addEventListener('touchend', function(event) { HandEndX=event.changedTouches[0].clientX; HandEndY=event.changedTouches[0].clientY; CountX=HandEndX-HandStartX; CountY=HandEndY-HandStartY; if((Math.abs(CountX)>Math.abs(CountY))&& Math.abs(CountX)>50){ var targetMotion = $(event.target); if(CountX<0){ if(targetMotion.next().length>0 && !targetMotion.next().hasClass("div-layer")){ targetMotion.siblings().hide(); targetMotion.addClass("fadeOutLeft"); targetMotion.next().removeClass("fadeOutRight").removeClass("fadeOutLeft").removeClass("fadeInLeft").addClass("fadeInRight").show(); } console.log("左滑"); }else{ if(targetMotion.prev().length>0 && !targetMotion.prev().hasClass("div-layer")){ targetMotion.siblings().hide(); targetMotion.addClass("fadeOutRight"); targetMotion.prev().removeClass("fadeOutRight").removeClass("fadeOutLeft").removeClass("fadeInRight").addClass("fadeInLeft").show(); } console.log("右滑"); } } }, false); wcMotion.addEventListener('touchmove', function(event) { //当屏幕有多个touch或者页面被缩放过,就不执行move操作 if(event.targetTouches.length > 1 || event.scale && event.scale !== 1) return; var touch = event.targetTouches[0]; endPos = {x:touch.pageX - startPos.x,y:touch.pageY - startPos.y}; //isScrolling为1时,表示纵向滑动,0为横向滑动 isScrolling = Math.abs(endPos.x) < Math.abs(endPos.y) ? 1:0; if(isScrolling === 0){ //阻止触摸事件的默认行为,即阻止滚屏 event.preventDefault(); } }, false); } }, 500); } //绘制饼图 function drawPie(arry, color){ var myChart = echarts.init(document.getElementById('fenbuMain')); var option = { tooltip: { trigger: 'item', formatter: "{a}
{b} : {c} ({d}%)", position: ['50%', '50%'] }, color: color, series: [ { name:'年龄', type:'pie', radius : '65%', center:['50%','50%'], label: { normal: { show: false, textStyle: { color: "#000" } } }, labelLine: { normal: { show: false } }, data:arry }] }; myChart.setOption(option); } //排序 function soreRank(arr) { var temp = []; var lis = []; for(var i=0;i= 0; i--) { if(count % 3 == 0 && count != 0) { newStr = str.charAt(i) + "," + newStr; } else { newStr = str.charAt(i) + newStr; } count++; } str = newStr + ".00"; //自动补小数点后两位 } else { for(var i = str.indexOf(".") - 1; i >= 0; i--) { if(count % 3 == 0 && count != 0) { newStr = str.charAt(i) + "," + newStr; } else { newStr = str.charAt(i) + newStr; //逐个字符相接起来 } count++; } str = newStr + (str + "00").substr((str + "00").indexOf("."), 3); } return str; } //返回事件 var old_back = mui.back; mui.back = function(){ if(reqList.length == 1){ old_back(); } else{ var preInfo = reqList.pop(); var info = reqList[reqList.length - 1]; level = info.level; code = info.code; areaTitle = info.areaTitle; lowlevel = info.lowlevel; sumType = info.sumType; tagCode = info.tagCode; $("#areaTitle").html(areaTitle); showLabs(); initReqParams(); loadData([0,1,2]); } }