var teamCode = '',
tType = 0,
startDate = "",
endDate = "",
dateType = 0, //时间状态,0-本周, 1-本月 默认0
qyType = 0; //签约状态 0-签约,1-续签 默认0
mui.init();
mui.plusReady(function(){
var self = plus.webview.currentWebview();
teamCode = self.teamCode;
loadAllData();
bindEvent();
});
function initReqParams(){
startDate = getStartDate();
endDate = getEndDate();
return [{
//总体情况
url: "statistics/getStatTitleInfo",
data: {startDate: startDate, endDate: endDate},
reqType: "GET"
},{
//签约情况
url: "statistics/getSignCountLineByType",
data: {
startDate: startDate,
endDate: endDate,
signType: qyType,
type: dateType
},
reqType: 'GET'
},{
//咨询统计
url: "statistics/getReyStatbyTeam",
data: {startDate: startDate, endDate: endDate, isNow: 1},
reqType: 'GET'
},{
//机构内服务排行
url: "statistics/getServiceRankingList",
data: {startDate: startDate, endDate: endDate},
reqType: 'GET'
},{
//长处方统计
url: "statistics/getPrescriptionTotalCount",
data: {startDate: startDate, endDate: endDate, adminTeamId: teamCode},
reqType: 'GET'
},{
//续签转签人数
url: 'statistics/getTeamRenewChangeLine',
data: {teamCode: teamCode, startDate: startDate, endDate: endDate, type: dateType},
reqType: 'GET'
},{
//医生评分
url: "statistics/getAvgLine",
data: {startDate: startDate, endDate: endDate, type: dateType},
reqType: 'GET'
}]
}
function loadAllData(){
var reqParams = initReqParams();
plus.nativeUI.showWaiting();
// getReqPromises(reqParams, true).then(function(ress){
//处理总体情况数据
sendGet(reqParams[0].url, reqParams[0].data, null, function(res){
plus.nativeUI.closeWaiting();
handleZTQK(res);
}, true);
//处理签约情况数据
sendGet(reqParams[1].url, reqParams[1].data, null, function(res){
handleQYQK(res);
}, true);
//处理咨询统计数据
sendGet(reqParams[2].url, reqParams[2].data, null, function(res){
handleZXTJ(res);
}, true);
//处理机构内服务排行
sendGet(reqParams[3].url, reqParams[3].data, null, function(res){
handleJGFW(res);
}, true);
//长处方统计
sendGet(reqParams[4].url, reqParams[4].data, null, function(res){
handleCCF(res);
}, true);
//处理续签转签
sendGet(reqParams[5].url, reqParams[5].data, null, function(res){
handleXQZQ(res);
}, true);
//处理医生评分
sendGet(reqParams[6].url, reqParams[6].data, null, function(res){
handleYSPF(res);
}, true);
// });
}
//处理总体情况数据
function handleZTQK(res){
if(res.status == 200){
var d = res.data;
$("#qyrs").text(d[0].signTotal);
$("#fwrs").text(d[1].consultCount + d[2].reservationCount + d[3].articleCount + d[4].guidanceCount + d[5].followupCount);
$("#pjmyd").text(d[6].avgScore || '暂无评分');
$(".jgph .mui-loading").remove();
var xData = ['咨询', '随访', '代预约', '指导', '教育'],
yData = [d[1].consultCount, d[5].followupCount,
d[2].reservationCount, d[4].guidanceCount, d[3].articleCount];
drawBar("jgChart", xData, yData, '数量', ["#fbba31"], null)
}else{
mui.toast(res.msg);
}
}
//处理签约情况数据
function handleQYQK(res){
$(".qyqk .mui-loading").remove();
if(res.status == 200){
var data = res.data,
xData = [],
yData = [];
if(dateType == 0){
var dateArr = _.map(data, function(o){
return o.applyDate;
});
var valArr = _.map(data, function(o){
return o.signCount;
});
var datas = getDaysData(dateArr, valArr);
xData = datas.xData;
yData = datas.yData;
}else if(dateType == 1){
var dateArr = _.map(data, function(o){
var ds = o.weekOfMonth;
return ds;
});
var valArr = _.map(data, function(o){
return o.signCount;
});
var datas = getWeeksData(dateArr, valArr);
xData = datas.xData;
yData = datas.yData;
}
var name = qyType == 0 ? "签约量" : "续签量";
var yDatas = [{
name: name,
data: yData
}]
drawLine("qyqkChart", xData, yDatas, ['#17b3ec']);
}else{
mui.toast(res.msg);
}
}
//处理咨询统计数据
function handleZXTJ(res){
$(".zxtj .mui-loading").remove();
if(res.status == 200){
var unreplay = res.data.onReyCount, //未回复数
total = res.data.totalCount, //总咨询数
replay = parseInt(total) - parseInt(unreplay); //已回复咨询数
$("#totalCount").text(total);
var sData = [{
name: '未回复咨询',
value: unreplay
}, {
name: '已回复咨询',
value: replay<0 ? 0 : replay
}];
var colors = ["#17b3ec", "#FF774F"]
drawPie("zxtjChart", sData, '咨询数量', colors);
}else{
mui.toast(res.msg);
}
}
//处理机构内服务排行
function handleJGFW(res){
$(".jgph .mui-loading").remove();
if(res.status == 200){
var data = res.data;
// var xData = ['咨询', '随访', '代预约', '指导', '教育'],
// yData = [data[0].consultRK, data[1].followupRK,
// data[2].reservationRK, data[3].guidanceRK, data[4].articleRK];
//
// drawBar("jgChart", xData, yData, '机构内服务排行', ["#fbba31"], "第{c}名")
var html = '';
html += '
' + (data[0].consultRK ? ('第' + data[0].consultRK + '名') : '') + '';
html += '' + (data[1].followupRK ? ('第' + data[1].followupRK + '名') : '') + '';
html += '' + (data[2].reservationRK ? ('第' + data[2].reservationRK + '名') : '') + '';
html += '' + (data[3].guidanceRK ? ('第' + data[3].guidanceRK + '名') : '') + '';
html += '' + (data[4].articleRK ? ('第' + data[4].articleRK + '名') : '') + '';
$(".jgnph").html(html);
}else{
mui.toast(res.msg);
}
}
//长处方统计
function handleCCF(res){
$(".ccf .mui-loading").remove();
if(res.status == 200){
var data = res.data;
var xData = ['总量', '已完成', '进行中', '居民\n取消', '审核\n未通过', '其他\n原因\n取消'],
yData = [data.total, data.finishCount, data.processingCount,
data.patientCancelCount, data.noReviewedCount, data.payOuttimeCount];
drawBar("ccfChart", xData, yData, '长处方统计', ["#17B3EC"], "{c}")
}else{
mui.toast(res.msg);
}
}
//处理续签转签
function handleXQZQ(res){
$(".xqzq .mui-loading").remove();
if(res.status == 200){
var data = res.data,
inDatas = [],
outDatas = [];
var valArr_in = _.map(data.inline, function(o){
return o.inCount;
});
var valArr_out = _.map(data.outline, function(o){
return o.outCount;
});
if(dateType == 0){
var dateArr_in = _.map(data.inline, function(o){
return o.dateNo;
});
var dateArr_out = _.map(data.outline, function(o){
return o.dateNo;
});
inDatas = getDaysData(dateArr_in, valArr_in);
outDatas = getDaysData(dateArr_out, valArr_out);
}else if(dateType == 1){
var dateArr_in = _.map(data.inline, function(o){
return o.weekOfMonth;
});
var dateArr_out = _.map(data.outline, function(o){
return o.weekOfMonth;
});
inDatas = getWeeksData(dateArr_in, valArr_in);
outDatas = getWeeksData(dateArr_out, valArr_out);
}
var yDatas = [{
name: '签入人数',
data: inDatas.yData
},{
name: '签出人数',
data: outDatas.yData
}],
legend = {
data:['签入人数','签出人数'],
top: 'top'
};
drawLine("xqzqChart", inDatas.xData, yDatas, ['#17b3ec', '#FF774F'], legend);
}else{
mui.toast(res.msg);
}
}
//处理医生评分
function handleYSPF(res){
$(".yspf .mui-loading").remove();
if(res.status == 200){
var data = res.data,
datas;
if(dateType == 0){
var dateArr = _.map(data, function(o){
return o.dateNo;
});
var valArr = _.map(data, function(o){
return o.avgCount;
});
datas = getDaysData(dateArr, valArr);
}else if(dateType == 1){
var dateArr = _.map(data, function(o){
var ds = o.weekNo;
return ds;
});
var valArr = _.map(data, function(o){
return o.avgCount;
});
datas = getWeeksData(dateArr, valArr);
}
var name = "平均评分";
var yDatas = [{
name: name,
data: datas.yData
}]
drawLine("mydChart", datas.xData, yDatas, ['#17b3ec']);
}else{
mui.toast(res.msg);
}
}
function bindEvent(){
$(".demo-comtop").on('click', "h1", function(){
var lCss = $(".lin-mask").css('display');
if (lCss == 'none') {
$(".lin-mask").show();
$(".lin-sel-group").show();
} else {
$(".lin-mask").hide();
$(".lin-sel-group").hide();
}
});
$(".lin-mask").on('click', function(){
$(".lin-mask").hide();
$(".lin-sel-group").hide();
});
$(".lin-sel-group").on('click', "li", function(){
var $this = $(this);
if($this.hasClass("checked")){
return false;
}
$(".lin-sel-group li").removeClass("checked");
$this.addClass("active");
dateType = parseInt($this.attr("data-type"));
$(".lin-mask").hide();
$(".lin-sel-group").hide();
var label = $this.find("label").text();
$("#selTit").text(label);
loadAllData();
});
$("#qiehuan").on('click', function(){
var type = $(this).attr('data-type');
if(type == '1') {
$(".qy-lab").html('续约情况');
$(".qy-qh").html('切换签约情况');
qyType = parseInt(type);
}else{
$(".qy-lab").html('签约情况');
$(".qy-qh").html('切换续约情况');
qyType = 0;
}
var reqParams = initReqParams();
//处理签约情况数据
sendGet(reqParams[1].url, reqParams[1].data, null, function(res){
handleQYQK(res);
}, true);
});
$("#zq_info").on('click', function(){
openWebview('../html/tuanduizhuanqianxiangqing.html',
{
teamCode: teamCode
})
})
}
function getStartDate(){
var now = new Date(),
sd = new Date();
switch(dateType){
case 0:
//获得本周的开始时间
sd.setDate(now.getDate() - now.getDay());
break;
case 1:
//获得本月的开始时间
sd.setDate(1);
break;
}
return sd.format("yyyy-MM-dd");
}
function getEndDate(){
var now = new Date(),
ed = new Date();
switch(dateType){
case 0:
//获得本周的结束时间
ed.setDate(now.getDate() + (6 - now.getDay()));
break;
case 1:
//获得本月的结束时间
ed.setMonth(ed.getMonth() + 1);
ed.setDate(1);
ed.setDate(ed.getDate() - 1);
break;
}
return ed.format("yyyy-MM-dd");
}
//获取一个月有几周
function getWeeksNum(){
var day=new Date(),
lastCurDay = new Date(day.getFullYear(), day.getMonth() + 1, 0),//获取当前月最后一天时间
a = lastCurDay.getFullYear(),
b = lastCurDay.getMonth(),
c = lastCurDay.getDate();
var date = new Date(a, b, c),
w = date.getDay(),
d = date.getDate();
return Math.ceil(
(d + 6 - w) / 7
);
}
//补全缺失的日期
function getDaysData(dateArr, valArr){
var xData = [],
yData = [];
for (var i = 0; i <= 6; i++) {
var sd = new Date(startDate);
sd.setDate(sd.getDate() + i);
var index = dateArr.indexOf(sd.format("yyyy-MM-dd"));
if(index > -1){
yData.push(valArr[index]);
}else{
yData.push(0);
}
xData.push(sd.format("MM-dd"));
}
return {xData: xData, yData: yData};
}
//补全缺失的周
function getWeeksData(dateArr, valArr){
var wn = getWeeksNum(),
xData = [],
yData = [];
for (var i = 1; i <= wn; i++) {
var index = dateArr.indexOf(i);
if(index > -1){
yData.push(valArr[index]);
}else{
yData.push(0);
}
xData.push("第"+i+"周");
}
return {xData: xData, yData: yData};
}