first commit

This commit is contained in:
2025-02-20 14:59:35 +08:00
parent d7be84fac6
commit d4a3bb8ffc
2541 changed files with 336536 additions and 0 deletions
@@ -0,0 +1,244 @@
<#def designatedPath="/personalRefundRateStat.htm"/>
<script>
var blamerAfterMap = new Z.HashMap();
var dataList = [];
//倒叙方法 [].reverse();
function getObject(json)
{
json = json.replace(/\r/g, '');
json = json.replace(/\n/g, '<br/>');
json = json.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
var reg = /(\u0000)|(\u0001)|(\u0002)|(\u0003)|(\u0004)|(\u0005)|(\u0006)|(\u0007)|(\u000b)|(\u000e)|(\u000f)|(\u0010)|(\u0011)|(\u0012)|(\u0013)|(\u0014)|(\u0015)|(\u0016)|(\u0017)|(\u0018)|(\u0019)|(\u001a)|(\u001b)|(\u001c)|(\u001d)|(\u001e)|(\u001f)/g;
//var reg = //g;
return Z.J.toObject(json.replace(reg, ""));
}
Z.onload(function()
{
<#for item : blamerAfterMap.values()>
blamerAfterMap.put('${item.getAfterBlamer()}', getObject('${item}'));
dataList.push(blamerAfterMap.get('${item.getAfterBlamer()}'));
</#for>
//显示数据
doShowBlamerList(dataList);
//显示详情
doShowDetail(dataList.length > 0 ? dataList[0].afterBlamer : '');
});
function doShowBlamerList(dataList)
{//显示责任人列表
dataList.sort(function (a, b){
a.afterCount = Z.V.isInteger(a.afterCount) ? a.afterCount : 0;
b.afterCount = Z.V.isInteger(b.afterCount) ? b.afterCount : 0;
a.lostAmount = Z.V.isFloat(a.lostAmount) ? a.lostAmount : 0;
b.lostAmount = Z.V.isFloat(b.lostAmount) ? b.lostAmount : 0;
var result1 = a.afterCount - b.afterCount;
var result2 = a.lostAmount - b.lostAmount;
return result2 != 0 ? result2 : result1;
});
dataList.sort();
dataList.reverse();
var blamerResultHtml = "";
blamerResultHtml +='<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">';
blamerResultHtml +='<tr class="z-h40" bgcolor="'+"${zmr_thead_bgcolor}"+'">';
blamerResultHtml +=' <td>序号</td>';
blamerResultHtml +=' <td>责任人</td>';
blamerResultHtml +=' <td>售后单数</td>';
blamerResultHtml +=' <td>损失金额</td>';
blamerResultHtml +=' <td>订单金额</td>';
blamerResultHtml +=' <td>售后金额占比</td>';
blamerResultHtml +='</tr>';
if (dataList.length > 0)
{
var totalCount = 0;
var totalLossAmount = 0;
var totalDesignAmount = 0;
Z.each(dataList, function(item, i){
var amount=(item.lostAmount ? item.lostAmount : 0)-(item.lossAmountCanceled ? item.lossAmountCanceled : 0);//计算真实损失金额
totalCount += parseFloat((item.afterCount ? item.afterCount : 0));
var trTotalLossAmount = parseFloat((amount >= 0 ? amount : 0));
var trTotalDesignAmount = parseFloat(Z.Amounts.toYuanMustRadix(item.totalOrderAmount));
var afterDetail = item.afterDetail ? item.afterDetail : [];
blamerResultHtml +='<tr class="z-h40" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'" onclick="doShowDetail(\''+(item.afterBlamer)+'\')">';
blamerResultHtml +=' <td>'+(i+1)+'</td>';
blamerResultHtml +=' <td>'+(item.afterBlamer)+'</td>';
blamerResultHtml +=' <td>'+(item.afterCount ? item.afterCount : 0)+'</td>';
blamerResultHtml +=' <td>'+(amount >= 0 ? amount : 0).toFixed(2)+'</td>';
blamerResultHtml +=' <td>'+(trTotalDesignAmount)+'</td>';
blamerResultHtml +=' <td>'+((trTotalLossAmount/trTotalDesignAmount)*100).toFixed(2)+'%</td>';
blamerResultHtml +='</tr>';
totalLossAmount += trTotalLossAmount;
totalDesignAmount += trTotalDesignAmount;
});
blamerResultHtml +='<tr class="z-h40">';
blamerResultHtml +=' <td colspan="2">总计</td>';
blamerResultHtml +=' <td>'+totalCount+'</td>';
blamerResultHtml +=' <td>'+totalLossAmount.toFixed(2)+'</td>';
blamerResultHtml +=' <td>'+totalDesignAmount.toFixed(2)+'</td>';
blamerResultHtml +=' <td>'+((totalLossAmount/totalDesignAmount)*100).toFixed(2)+'%</td>';
blamerResultHtml +='</tr>';
}
else
{
blamerResultHtml +='<tr class="z-h40">';
blamerResultHtml +=' <td colspan="5">暂时没有数据信息</td>';
blamerResultHtml +='</tr>';
}
Z("#blamerResult").htmlc(blamerResultHtml);
}
function getAfterStatusHtml(status)
{//获取售后窗台
<#for item : AfterConstants.getStatusList()>
if (''+status == ''+'${item.value()}')
{
var status${item_index} = "${AfterConstants.statusHtml(item.value())}";
return status${item_index};
}
</#for>
return '';
}
function doShowDetail(afterBlamer)
{//显示详情
var blamer = blamerAfterMap.get(afterBlamer);
var afterDetail = blamer ? blamer.afterDetail : [];
afterDetail = afterDetail ? afterDetail : [];
var canceledDetail = blamer ? blamer.canceledDetail : [];
canceledDetail = canceledDetail ? canceledDetail : [];
var commNorecod = '';
commNorecod += '<tr valign="middle" class="z-h40 z-text-center z-bg-white">';
commNorecod += ' <td colspan="20">暂无数据信息</td>';
commNorecod += '</tr>';
var commThead = ''
commThead += '<tr class="z-h40 z-text-center z-bg-gray">';
commThead += ' <td width="90">售后单号</td>';
commThead += ' <td width="90">设计单号</td>';
commThead += ' <td width="90">处理状态</td>';
commThead += ' <td width="100">损失金额</td>';
commThead += ' <td width="100">设计师</td>';
commThead += ' <td width="100">店铺</td>';
commThead += ' <td width="100">旺旺号</td>';
commThead += ' <td width="*">产品</td>';
commThead += ' <td width="90">订单金额</td>';
commThead += ' <td width="90">售后创建时间</td>';
commThead += ' <td width="*">售后原因</td>';
commThead += '</tr>';
var blamerAfterDetailHtml = '';
blamerAfterDetailHtml += '<div class="z-overflow-y-auto" style="max-height:750px">'
blamerAfterDetailHtml += '<table class="z-table z-bordered z-bg-white z-text-center">';
blamerAfterDetailHtml += '<tr class="z-h40"> ';
blamerAfterDetailHtml += ' <td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<span class="z-text-red z-bold">['+afterBlamer+']</span>售后订单详情</td>';
blamerAfterDetailHtml += '</tr>';
blamerAfterDetailHtml += commThead;
if (afterDetail.length > 0)
{
Z.each(afterDetail, function(item, i)
{
blamerAfterDetailHtml += '<tr align="center" class="z-h40 z-pointer" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'"> ';
blamerAfterDetailHtml += ' <td>'+item.designAfsId+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designId+'</td>';
blamerAfterDetailHtml += ' <td>'+getAfterStatusHtml(item.afterStatus)+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.lossAmount ? item.lossAmount : 0).toFixed(2)+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designer+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.shopNick ? item.shopNick : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.buyerNick ? item.buyerNick : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.orderText ? item.orderText : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+parseFloat((item.amount ? Z.Amounts.toYuanMustRadix(''+item.amount) : 0)).toFixed(2)+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.afterFinishTime ? item.afterCreateTime : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.problemDesc ? item.problemDesc : '')+'</td>';
blamerAfterDetailHtml += '</tr>';
});
blamerAfterDetailHtml += '<tr valign="middle" class="z-h40 z-text-right z-bg-white">';
blamerAfterDetailHtml += ' <td colspan="15">共&nbsp;<span class="z-text-red">'+afterDetail.length+'</span>&nbsp;条数据&nbsp;&nbsp;</td>';
blamerAfterDetailHtml += '</tr>';
}
else
blamerAfterDetailHtml += commNorecod;
blamerAfterDetailHtml += ' </table>';
blamerAfterDetailHtml += '</div>'
blamerAfterDetailHtml += '</table>';
blamerAfterDetailHtml += '</div>';
Z("#blamerAfterDetailHtml").htmlc(blamerAfterDetailHtml);
}
</script>
${zhiqim_manager_breadcrumb("售后统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('personalAfterStatistics.htm');">个人售后统计</li>
<#if ZmrPathRule.check(request, "/designAfterStatistics.htm")><li onclick="Z.L.href('designAfterStatistics.htm')">售后订单统计</li></#if>
<li class="z-active">售后创建统计</li>
<#if ZmrPathRule.check(request, "/designAfterReasonStatistics.htm")><li onclick="Z.L.href('designAfterReasonStatistics.htm')">售后原因统计</li></#if>
<#if ZmrPathRule.check(request, "/designAfterOrgStatistics.htm")><li onclick="Z.L.href('designAfterOrgStatistics.htm')">售后组织统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="button" class="z-mg-l10 z-button ${zmr_color_class}" onclick="this.form.submit()">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="450" valign="top">
<div id="blamerResult" class="z-overflow-y-auto" style="max-height:760px">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>责任人</td>
<td>售后单数</td>
<td>损失金额</td>
<td>订单金额</td>
<td>售后金额占比</td>
</tr>
<tr class="z-h40">
<td colspan="5">暂时没有数据信息</td>
</tr>
</table>
</div>
</td>
<td width="*" id="blamerAfterDetailHtml" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,365 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
var dataMap = new Z.HashMap();
var dataList = [];
var orgMap = new Z.HashMap();
var finalizeEndMap = new Z.HashMap();
var finalizeSum =0;
var allOrgCountMap=new Z.HashMap();
var allCount=0;
//倒叙方法 [].reverse();
function getObject(json)
{
json = json.replace(/\r/g, '');
json = json.replace(/\n/g, '<br/>');
json = json.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
var reg = /(\u0000)|(\u0001)|(\u0002)|(\u0003)|(\u0004)|(\u0005)|(\u0006)|(\u0007)|(\u000b)|(\u000e)|(\u000f)|(\u0010)|(\u0011)|(\u0012)|(\u0013)|(\u0014)|(\u0015)|(\u0016)|(\u0017)|(\u0018)|(\u0019)|(\u001a)|(\u001b)|(\u001c)|(\u001d)|(\u001e)|(\u001f)/g;
//var reg = //g;
return Z.J.toObject(json.replace(reg, ""));
}
function initData()
{//数据初始化
<#for item : orgAfterMap.values()>
dataMap.put('${item.getAfterBlamer()}', getObject('${item}'));
dataList.push(dataMap.get('${item.getAfterBlamer()}'));
</#for>
<#for item : finalizeMap.keySet()>
finalizeEndMap.put('${item}','${finalizeMap.get(item)}');
</#for>
<#for item : allDesignOrderCountMap.keySet()>
allOrgCountMap.put('${item}','${allDesignOrderCountMap.get(item)}');
</#for>
<#for item : orgList>
orgMap.put('${item.getOrgId()}', getObject('${item}'));
</#for>
};
function getOrgName(orgId)
{//获取售后原因
return orgMap.get(''+orgId) ? orgMap.get(''+orgId).orgName : ''+orgId;
}
function doBuildCharts()
{//构建图表
var allCount = 0;
var chartDatas = [];
try
{
Z.each(dataList, function(orgData, i){
allCount += orgData.afterCount ? orgData.afterCount : 0;
});
Z.each(dataList, function(orgData, i){
var ratio = 0;
if (allCount > 0)
{
ratio = ((orgData.afterCount ? orgData.afterCount : 0) / allCount)*100;
}
var name = getOrgName(orgData.afterBlamer);
chartDatas.push({name: name, y:ratio.toFixed(2)*1})
//chartDatas.push({name:"1232331", y:200})
});
}
catch(e)
{console.error(e)}
console.log(chartDatas);
console.log(allCount);
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '售后组织总统计(总售后单量:'+allCount+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.2f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.2f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '百分比',
colorByPoint: true,
data:chartDatas
}]
});
}
function doBuildChartTable()
{//构建表格统计
var allCount = 0;
var allLostAmount = 0;
var allOrderAmount = 0;
var allOrgOrdAmount = 0;
Z.each(dataList, function(orgData, i){
var oName = getOrgName(orgData.afterBlamer);
allCount += orgData.afterCount ? orgData.afterCount : 0;
allLostAmount += orgData.lostAmount ? orgData.lostAmount : 0;
allOrderAmount += orgData.totalOrderAmount ? Z.Amounts.toYuanMustRadix(orgData.totalOrderAmount)*1 : 0;
allOrgOrdAmount += allOrgCountMap.get(oName)==null ? 0:Z.Amounts.toYuanMustRadix(allOrgCountMap.get(oName))*1;
});
var chartTableHtml = '';
chartTableHtml += '<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">';
chartTableHtml += ' <tr class="z-bg-gray">';
chartTableHtml += ' <td width="100">售后组织</td>';
chartTableHtml += ' <td width="80">总定稿量</td>';
chartTableHtml += ' <td width="95">总定稿金额</td>';
chartTableHtml += ' <td width="80">售后单量</td>';
//chartTableHtml += ' <td width="110">售后单量占比</td>';
chartTableHtml += ' <td width="95">售后单损失金额</td>';
chartTableHtml += ' <td width="95">售后单金额</td>';
chartTableHtml += ' <td width="95">售后&总定稿金额占比</td>';
chartTableHtml += ' <td width="95">售后&总定稿量占比</td>';
//chartTableHtml += ' <td width="*">售后损失&订单金额占比</td>';
chartTableHtml += ' </tr>';
Z.each(dataList, function(orgData, i){
var orgName = getOrgName(orgData.afterBlamer);
var afterCount = orgData.afterCount ? orgData.afterCount : 0;
var totalOrderAmount = orgData.totalOrderAmount ? Z.Amounts.toYuanMustRadix(orgData.totalOrderAmount)*1 : 0;
var lostAmount = orgData.lostAmount ? orgData.lostAmount : 0;
var finalizeCount = finalizeEndMap.get(orgName) == null ? 0 : finalizeEndMap.get(orgName);
var allOrgCount=allOrgCountMap.get(orgName) == null ? 0 : Z.Amounts.toYuanMustRadix(allOrgCountMap.get(orgName))*1;
finalizeSum += parseInt(finalizeCount);
chartTableHtml += ' <tr class="z-h40" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'">';
chartTableHtml += ' <td><a href="javascript:doShowDetailList(\''+orgData.afterBlamer+'\')" class="z-text-ellipsis z-pointer" style="max-width:120px" title="'+orgName+'">'+orgName+'</a></td>';
chartTableHtml += ' <td>'+finalizeCount+'</td>';
chartTableHtml += ' <td>'+allOrgCount+'</td>';
chartTableHtml += ' <td>'+afterCount+'</td>';
//chartTableHtml += ' <td>'+(allCount == 0 ? 0 : (afterCount/allCount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' <td>'+lostAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+totalOrderAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+(allOrgCount == 0 ? 100 : (totalOrderAmount/allOrgCount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' <td>'+(finalizeCount == 0 ? 100 : (afterCount/finalizeCount)*100).toFixed(2)+'%</td>';
//chartTableHtml += ' <td>'+(totalOrderAmount == 0 ? 100 : (lostAmount/totalOrderAmount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' </tr>';
});
chartTableHtml += ' <tr class="z-bold">';
chartTableHtml += ' <td>总计</td>';
chartTableHtml += ' <td>'+finalizeSum+'</td>';
chartTableHtml += ' <td>'+allOrgOrdAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+allCount+'</td>';
//chartTableHtml += ' <td>100%</td>';
chartTableHtml += ' <td>'+allLostAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+allOrderAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+(allOrgOrdAmount == 0 ? 100 : (allOrderAmount/allOrgOrdAmount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' <td>'+(finalizeSum == 0 ? 100 : (allCount/finalizeSum)*100).toFixed(2)+'%</td>';
//chartTableHtml += ' <td>'+(allOrderAmount == 0 ? 0 : (allLostAmount/allOrderAmount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' </tr>';
chartTableHtml += ' </table>';
Z("#chartTable_panal").htmlc(chartTableHtml)
}
Z.onload(function()
{
//初始化数据
initData();
//构建图表
doBuildCharts();
//构建表格统计
doBuildChartTable();
});
function getAfterStatusHtml(status)
{//获取售后状态
<#for item : AfterConstants.getStatusList()>
if (''+status == ''+'${item.value()}')
{
var status${item_index} = "${AfterConstants.statusHtml(item.value())}";
return status${item_index};
}
</#for>
return '';
}
function doShowDetailList(orgId)
{//显示详情列表
var afterModule = dataMap.get(''+orgId);
var detailList = afterModule.afterDetail ? afterModule.afterDetail : [];
if (detailList .length == 0)
return;
detailList.sort(function (a, b){
a.afterCount = Z.V.isInteger(a.afterCount) ? a.afterCount : 0;
b.afterCount = Z.V.isInteger(b.afterCount) ? b.afterCount : 0;
a.lostAmount = Z.V.isFloat(a.lostAmount) ? a.lostAmount : 0;
b.lostAmount = Z.V.isFloat(b.lostAmount) ? b.lostAmount : 0;
var result1 = a.afterCount - b.afterCount;
var result2 = a.lostAmount - b.lostAmount;
return result2 != 0 ? result2 : result1;
});
detailList.sort();
detailList.reverse();
var detailHtml = '';
var commNorecod = '';
commNorecod += '<tr valign="middle" class="z-h40 z-text-center z-bg-white">';
commNorecod += ' <td colspan="20">暂无数据信息</td>';
commNorecod += '</tr>';
var commThead = ''
commThead += '<tr class="z-h40 z-text-center z-bg-gray">';
commThead += ' <td width="90">售后单号</td>';
commThead += ' <td width="90">设计单号</td>';
commThead += ' <td width="90">处理状态</td>';
commThead += ' <td width="100">损失金额</td>';
commThead += ' <td width="100">设计师</td>';
commThead += ' <td width="100">店铺</td>';
commThead += ' <td width="100">旺旺号</td>';
commThead += ' <td width="*">产品</td>';
commThead += ' <td width="90">订单金额</td>';
commThead += ' <td width="90">售后创建时间</td>';
commThead += ' <td width="90">联系人</td>';
commThead += ' <td width="100">联系电话</td>';
commThead += '</tr>';
detailHtml += '<div class="z-overflow-y-auto" style="max-height:750px">';
detailHtml += '<table class="z-table z-bordered z-bg-white z-text-center">';
detailHtml += commThead;
if (detailList.length > 0)
{
Z.each(detailList, function(item, i)
{
detailHtml += '<tr align="center" class="z-h40 z-pointer" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'"> ';
detailHtml += ' <td>'+item.designAfsId+'</td>';
detailHtml += ' <td>'+item.designId+'</td>';
detailHtml += ' <td>'+getAfterStatusHtml(item.afterStatus)+'</td>';
detailHtml += ' <td>'+(item.lossAmount ? item.lossAmount : 0).toFixed(2)+'</td>';
detailHtml += ' <td>'+item.designer+'</td>';
detailHtml += ' <td>'+(item.shopNick ? item.shopNick : '')+'</td>';
detailHtml += ' <td>'+(item.buyerNick ? item.buyerNick : '')+'</td>';
detailHtml += ' <td>'+(item.orderText ? item.orderText : '')+'</td>';
detailHtml += ' <td>'+parseFloat((item.amount ? Z.Amounts.toYuanMustRadix(''+item.amount) : 0)).toFixed(2)+'</td>';
detailHtml += ' <td>'+(item.afterFinishTime ? item.afterCreateTime : '')+'</td>';
detailHtml += ' <td>'+(item.userContact ? item.userContact : '')+'</td>';
detailHtml += ' <td>'+(item.userMobile ? item.userMobile : '')+'</td>';
detailHtml += '</tr>';
});
detailHtml += '<tr valign="middle" class="z-h40 z-text-right z-bg-white">';
detailHtml += ' <td colspan="15">共&nbsp;<span class="z-text-red">'+detailList.length+'</span>&nbsp;条数据&nbsp;&nbsp;</td>';
detailHtml += '</tr>';
}
else
detailHtml += commNorecod;
detailHtml += ' </table>';
detailHtml += '</div>'
detailHtml += '</table>';
detailHtml += '</div>';
var title ='<span class="zi-text-red zi-bold">['+getOrgName(afterModule.afterBlamer)+']</span>售后订单详情统';
if (Z("#detailHtml").length == 0)
Z.dialog({id:'detailDialog',title: '<span id="detailDialogTile"><span>', text: '<div id="detailHtml"></div>', width:1300, height:780, shadow:true})
Z("#detailDialogTile").htmlc(title);
Z("#detailHtml").htmlc(detailHtml);
}
</script>
${zhiqim_manager_breadcrumb("售后统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('personalAfterStatistics.htm');">个人售后统计</li>
<#if ZmrPathRule.check(request, "/designAfterStatistics.htm")><li onclick="Z.L.href('designAfterStatistics.htm')">售后订单统计</li></#if>
<#if ZmrPathRule.check(request, "/designAfterCreateStatistics.htm")><li onclick="Z.L.href('designAfterCreateStatistics.htm')">售后创建统计</li></#if>
<#if ZmrPathRule.check(request, "/designAfterReasonStatistics.htm")><li onclick="Z.L.href('designAfterReasonStatistics.htm')">售后原因统计</li></#if>
<li class="z-active">售后组织统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designAfterOrgStatistics.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="button" class="z-mg-l10 z-button ${zmr_color_class}" onclick="Z.loading({shadow: true});this.form.submit();">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="40%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*" valign="top">
<div id="chartTable_panal" class="z-overflow-y-auto" style="max-height:750px">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">
<tr class="z-bg-gray">
<td width="100">售后组织</td>
<td width="80">总定稿量</td>
<td width="95">总定稿金额</td>
<td width="80">售后单量</td>
<!--<td width="110">售后单量占比</td> -->
<td width="95">售后单损失金额</td>
<td width="95">售后单金额</td>
<td width="95">售后&总定稿金额占比</td>
<td width="95">售后&总定稿量占比</td>
<!--<td width="*">售后损失&订单金额占比</td>-->
</tr>
<tr class="z-bold">
<td>总计</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,287 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
var dataList = ${reasonList};
Z.onload(function()
{
//构建图表
doBuildCharts();
//构建表格统计
doBuildChartTable();
});
//构建图表
function doBuildCharts()
{
var allCount = 0;
var chartDatas = [];
try
{
Z.each(dataList, function(reasonData, i){
allCount += reasonData.afterCount ? reasonData.afterCount : 0;
});
Z.each(dataList, function(reasonData, i){
var ratio = 0;
if (allCount > 0)
{
ratio = ((reasonData.afterCount ? reasonData.afterCount : 0) / allCount)*100;
}
var name = reasonData.problemReason;
chartDatas.push({name: name, y:ratio.toFixed(2)*1})
});
}
catch(e)
{console.error(e)}
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '售后原因总统计(总售后单量:'+allCount+')'},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.2f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.2f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '百分比',
colorByPoint: true,
data:chartDatas
}]
});
}
//构建表格统计
function doBuildChartTable()
{
var allCount = 0;
var allLostAmount = 0;
var allOrderAmount = 0;
Z.each(dataList, function(reasonData, i){
allCount += reasonData.afterCount ? reasonData.afterCount : 0;
allLostAmount += reasonData.lostAmount ? reasonData.lostAmount : 0;
allOrderAmount += reasonData.totalOrderAmount ? Z.Amounts.toYuanMustRadix(reasonData.totalOrderAmount)*1 : 0;
});
var chartTableHtml = '';
chartTableHtml += '<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">';
chartTableHtml += ' <tr class="z-bg-gray">';
chartTableHtml += ' <td width="200">售后原因</td>';
chartTableHtml += ' <td width="100">售后单量</td>';
chartTableHtml += ' <td width="100">单量占比</td>';
chartTableHtml += ' <td width="100">损失金额</td>';
chartTableHtml += ' <td width="100">订单金额</td>';
chartTableHtml += ' <td width="*">损失&订单金额占比</td>';
chartTableHtml += ' </tr>';
Z.each(dataList, function(reasonData, i){
var reason = reasonData.problemReason;
var afterCount = reasonData.afterCount ? reasonData.afterCount : 0;
var totalOrderAmount = reasonData.totalOrderAmount ? Z.Amounts.toYuanMustRadix(reasonData.totalOrderAmount)*1 : 0;
var lostAmount = reasonData.lostAmount ? reasonData.lostAmount : 0;
chartTableHtml += ' <tr class="z-h40" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'">';
chartTableHtml += ' <td>'+reason+'</td>';
chartTableHtml += ' <td>'+afterCount+'</td>';
chartTableHtml += ' <td>'+(allCount == 0 ? 0 : (afterCount/allCount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' <td>'+lostAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+totalOrderAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+(totalOrderAmount == 0 ? 100 : (lostAmount/totalOrderAmount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' </tr>';
});
chartTableHtml += ' <tr class="z-bold">';
chartTableHtml += ' <td>总计</td>';
chartTableHtml += ' <td>'+allCount+'</td>';
chartTableHtml += ' <td>'+(allCount != 0 ? '100%' : 0)+'</td>';
chartTableHtml += ' <td>'+allLostAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+allOrderAmount.toFixed(2)+'</td>';
chartTableHtml += ' <td>'+(allOrderAmount == 0 ? 0 : (allLostAmount/allOrderAmount)*100).toFixed(2)+'%</td>';
chartTableHtml += ' </tr>';
chartTableHtml += ' </table>';
Z("#chartTable_panal").htmlc(chartTableHtml)
}
//显示原因详情列表
function doShowDetailList(reason)
{
var afterModule = dataMap.get(reason);
var detailList = afterModule.afterDetail ? afterModule.afterDetail : [];
if (detailList .length == 0)
return;
detailList.sort(function (a, b){
a.afterCount = Z.V.isInteger(a.afterCount) ? a.afterCount : 0;
b.afterCount = Z.V.isInteger(b.afterCount) ? b.afterCount : 0;
a.lostAmount = Z.V.isFloat(a.lostAmount) ? a.lostAmount : 0;
b.lostAmount = Z.V.isFloat(b.lostAmount) ? b.lostAmount : 0;
var result1 = a.afterCount - b.afterCount;
var result2 = a.lostAmount - b.lostAmount;
return result2 != 0 ? result2 : result1;
});
detailList.sort();
detailList.reverse();
var detailHtml = '';
var commNorecod = '';
commNorecod += '<tr valign="middle" class="z-h40 z-text-center z-bg-white">';
commNorecod += ' <td colspan="20">暂无数据信息</td>';
commNorecod += '</tr>';
var commThead = ''
commThead += '<tr class="z-h40 z-text-center z-bg-gray">';
commThead += ' <td width="90">售后单号</td>';
commThead += ' <td width="90">设计单号</td>';
commThead += ' <td width="90">处理状态</td>';
commThead += ' <td width="100">损失金额</td>';
commThead += ' <td width="100">设计师</td>';
commThead += ' <td width="100">店铺</td>';
commThead += ' <td width="100">旺旺号</td>';
commThead += ' <td width="*">产品</td>';
commThead += ' <td width="90">订单金额</td>';
commThead += ' <td width="90">售后创建时间</td>';
commThead += ' <td width="90">联系人</td>';
commThead += ' <td width="100">联系电话</td>';
commThead += '</tr>';
detailHtml += '<div class="z-overflow-y-auto" style="max-height:750px">';
detailHtml += '<table class="z-table z-bordered z-bg-white z-text-center">';
detailHtml += commThead;
if (detailList.length > 0)
{
Z.each(detailList, function(item, i)
{
detailHtml += '<tr align="center" class="z-h40 z-pointer" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'"> ';
detailHtml += ' <td>'+item.designAfsId+'</td>';
detailHtml += ' <td>'+item.designId+'</td>';
detailHtml += ' <td>'+getAfterStatusHtml(item.afterStatus)+'</td>';
detailHtml += ' <td>'+(item.lossAmount ? item.lossAmount : 0).toFixed(2)+'</td>';
detailHtml += ' <td>'+item.designer+'</td>';
detailHtml += ' <td>'+(item.shopNick ? item.shopNick : '')+'</td>';
detailHtml += ' <td>'+(item.buyerNick ? item.buyerNick : '')+'</td>';
detailHtml += ' <td>'+(item.orderText ? item.orderText : '')+'</td>';
detailHtml += ' <td>'+parseFloat((item.amount ? Z.Amounts.toYuanMustRadix(''+item.amount) : 0)).toFixed(2)+'</td>';
detailHtml += ' <td>'+(item.afterFinishTime ? item.afterCreateTime : '')+'</td>';
detailHtml += ' <td>'+(item.userContact ? item.userContact : '')+'</td>';
detailHtml += ' <td>'+(item.userMobile ? item.userMobile : '')+'</td>';
detailHtml += '</tr>';
});
detailHtml += '<tr valign="middle" class="z-h40 z-text-right z-bg-white">';
detailHtml += ' <td colspan="15">共&nbsp;<span class="z-text-red">'+detailList.length+'</span>&nbsp;条数据&nbsp;&nbsp;</td>';
detailHtml += '</tr>';
}
else
detailHtml += commNorecod;
detailHtml += ' </table>';
detailHtml += '</div>'
detailHtml += '</table>';
detailHtml += '</div>';
var title ='<span class="zi-text-red zi-bold">['+getProblemName(afterModule.afterBlamer)+']</span>售后订单详情统';
if (Z("#detailHtml").length == 0)
Z.dialog({id:'detailDialog',title: '<span id="detailDialogTile"><span>', text: '<div id="detailHtml"></div>', width:1300, height:780, shadow:true})
Z("#detailDialogTile").htmlc(title);
Z("#detailHtml").htmlc(detailHtml);
}
function getAfterStatusHtml(status)
{//获取售后状态
<#for item : AfterConstants.getStatusList()>
if (''+status == ''+'${item.value()}')
{
var status${item_index} = "${AfterConstants.statusHtml(item.value())}";
return status${item_index};
}
</#for>
return '';
}
</script>
${zhiqim_manager_breadcrumb("售后统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/designAfterStatistics.htm")><li onclick="Z.L.href('designAfterStatistics.htm')">售后订单统计</li></#if>
<li class="z-active">售后原因统计</li>
<!--<li onclick="Z.Location.href('personalAfterStatistics.htm');">个人售后统计</li>
<#if ZmrPathRule.check(request, "/designAfterCreateStatistics.htm")><li onclick="Z.L.href('designAfterCreateStatistics.htm')">售后创建统计</li></#if>
<#if ZmrPathRule.check(request, "/designAfterOrgStatistics.htm")><li onclick="Z.L.href('designAfterOrgStatistics.htm')">售后组织统计</li></#if>-->
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>售后日期:
<input name="beginDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${beginDate}">&nbsp;-
<input name="endDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${endDate}">
<button type="button" class="z-mg-l10 z-button ${zmr_color_class}" onclick="this.form.action='#?t='+ new Date().getTime();this.form.submit()">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="52%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*" valign="top">
<div id="chartTable_panal" class="z-overflow-y-auto" style="max-height:750px">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">
<tr class="z-bg-gray">
<td width="200">售后原因</td>
<td width="80">单量</td>
<td width="100">单量占比</td>
<td width="80">损失金额</td>
<td width="80">订单金额</td>
<td width="*">损失&订单金额占比</td>
</tr>
<tr class="z-bold">
<td>总计</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,283 @@
<#def designatedPath="/personalRefundRateStat.htm"/>
<script>
var blamerAfterMap = new Z.HashMap();
var dataList = [];
//倒叙方法 [].reverse();
function getObject(json)
{
json = json.replace(/\r/g, '');
json = json.replace(/\n/g, '<br/>');
json = json.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
var reg = /(\u0000)|(\u0001)|(\u0002)|(\u0003)|(\u0004)|(\u0005)|(\u0006)|(\u0007)|(\u000b)|(\u000e)|(\u000f)|(\u0010)|(\u0011)|(\u0012)|(\u0013)|(\u0014)|(\u0015)|(\u0016)|(\u0017)|(\u0018)|(\u0019)|(\u001a)|(\u001b)|(\u001c)|(\u001d)|(\u001e)|(\u001f)/g;
//var reg = //g;
return Z.J.toObject(json.replace(reg, ""));
}
Z.onload(function()
{
<#for item : blamerAfterMap.values()>
blamerAfterMap.put('${item.getAfterBlamer()}', getObject('${item}'));
dataList.push(blamerAfterMap.get('${item.getAfterBlamer()}'));
</#for>
//显示数据
doShowBlamerList(dataList);
//显示详情
doShowDetail(dataList.length > 0 ? dataList[0].afterBlamer : '');
});
function doShowBlamerList(dataList)
{//显示责任人列表
dataList.sort(function (a, b){
a.afterCount = Z.V.isInteger(a.afterCount) ? a.afterCount : 0;
b.afterCount = Z.V.isInteger(b.afterCount) ? b.afterCount : 0;
a.lostAmount = Z.V.isFloat(a.lostAmount) ? a.lostAmount : 0;
b.lostAmount = Z.V.isFloat(b.lostAmount) ? b.lostAmount : 0;
var result1 = a.afterCount - b.afterCount;
var result2 = a.lostAmount - b.lostAmount;
return result2 != 0 ? result2 : result1;
});
dataList.sort();
dataList.reverse();
var blamerResultHtml = "";
blamerResultHtml +='<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">';
blamerResultHtml +='<tr class="z-h40" bgcolor="'+"${zmr_thead_bgcolor}"+'">';
blamerResultHtml +=' <td>序号</td>';
blamerResultHtml +=' <td>责任人</td>';
blamerResultHtml +=' <td>售后单数</td>';
blamerResultHtml +=' <td>定稿单数</td>';
blamerResultHtml +=' <td title="售后单量/定稿单量">售后率</td>';
blamerResultHtml +=' <td width="80">订单金额</td>';
blamerResultHtml +=' <td width="80">损失金额</td>';
blamerResultHtml +=' <td width="80">赔付金额</td>';
blamerResultHtml +='</tr>';
if (dataList.length > 0)
{
var totalCount = 0;
var totalAmount = 0;
var orderEndSum = 0;
var lostAmount = 0;
var totalLAmount = 0;
var totalOrderAmount = 0;
var myselectYear=document.getElementById("year");
var myselectMonth=document.getElementById("month");
var year=myselectYear.value;
var month=myselectMonth.value;
var dateTime = new Date(year+"-"+month+"-01 00:00:00").getTime();
var lDateTime = new Date("2021-10-01 00:00:00").getTime();
var amount = 0;
var lamount = 0;
Z.each(dataList, function(item, i){
if(dateTime >= lDateTime){
lostAmount = item.compensateAmount;
}else {
lostAmount = item.lostAmount;
}
amount=lostAmount ? lostAmount : 0;
lamount = (item.lostAmount ? item.lostAmount : 0)-(item.lossAmountCanceled ? item.lossAmountCanceled : 0);
blamerResultHtml +='<tr class="z-h40" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'" onclick="doShowDetail(\''+(item.afterBlamer)+'\')">';
blamerResultHtml +=' <td>'+(i+1)+'</td>';
blamerResultHtml +=' <td>'+(item.afterBlamer)+'</td>';
blamerResultHtml +=' <td>'+(item.afterCount ? item.afterCount : 0)+'</td>';
blamerResultHtml +=' <td>'+(item.orderEnds)+'</td>';
blamerResultHtml +=' <td>'+(item.afterRatio)+'%</td>';
blamerResultHtml +=' <td>'+(item.totalOrderAmount>=0 ? item.totalOrderAmount : 0).toFixed(2)/100+'</td>';
blamerResultHtml +=' <td>'+(lamount>=0 ? lamount : 0).toFixed(2)+'</td>';
blamerResultHtml +=' <td>'+(amount>=0 ? amount : 0).toFixed(2)+'</td>';
blamerResultHtml +='</tr>';
totalOrderAmount += parseFloat((item.totalOrderAmount>=0 ? item.totalOrderAmount : 0))/100;
totalCount += parseFloat((item.afterCount ? item.afterCount : 0));
totalAmount += parseFloat((lamount>=0 ? lamount : 0));
totalLAmount += parseFloat((amount>=0 ? amount : 0));
orderEndSum += item.orderEnds;
});
blamerResultHtml +='<tr class="z-h40">';
blamerResultHtml +=' <td colspan="2">总计</td>';
blamerResultHtml +=' <td>'+totalCount+'</td>';
blamerResultHtml +=' <td>'+orderEndSum+'</td>';
blamerResultHtml +=' <td>'+((totalCount *100)/orderEndSum).toFixed(2)+'%</td>';
blamerResultHtml +=' <td>'+totalOrderAmount.toFixed(2)+'</td>';
blamerResultHtml +=' <td>'+totalAmount.toFixed(2)+'</td>';
blamerResultHtml +=' <td>'+totalLAmount.toFixed(2)+'</td>';
blamerResultHtml +='</tr>';
}
else
{
blamerResultHtml +='<tr class="z-h40">';
blamerResultHtml +=' <td colspan="7">暂时没有数据信息</td>';
blamerResultHtml +='</tr>';
}
Z("#blamerResult").htmlc(blamerResultHtml);
}
function getAfterStatusHtml(status)
{//获取售后窗台
<#for item : AfterConstants.getStatusList()>
if (''+status == ''+'${item.value()}')
{
var status${item_index} = "${AfterConstants.statusHtml(item.value())}";
return status${item_index};
}
</#for>
return '';
}
function doShowDetail(afterBlamer)
{//显示详情
var blamer = blamerAfterMap.get(afterBlamer);
var afterDetail = blamer ? blamer.afterDetail : [];
afterDetail = afterDetail ? afterDetail : [];
var canceledDetail = blamer ? blamer.canceledDetail : [];
canceledDetail = canceledDetail ? canceledDetail : [];
var commNorecod = '';
commNorecod += '<tr valign="middle" class="z-h40 z-text-center z-bg-white">';
commNorecod += ' <td colspan="11">暂无数据信息</td>';
commNorecod += '</tr>';
var commThead = ''
commThead += '<tr class="z-h40 z-text-center z-bg-gray">';
commThead += ' <td width="120">设计单号</td>';
commThead += ' <td width="100">处理状态</td>';
commThead += ' <td width="100">损失金额</td>';
commThead += ' <td width="100">赔付金额</td>';
commThead += ' <td width="100">设计师</td>';
commThead += ' <td width="*">产品</td>';
commThead += ' <td width="90">售后完成时间</td>';
commThead += ' <td width="*">售后原因</td>';
commThead += '</tr>';
var blamerAfterDetailHtml = '';
blamerAfterDetailHtml += '<div class="z-overflow-y-auto">'
blamerAfterDetailHtml += '<table class="z-table z-bordered z-bg-white z-text-center">';
blamerAfterDetailHtml += '<tr class="z-h40"> ';
blamerAfterDetailHtml += ' <td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<span class="z-text-red z-bold">['+afterBlamer+']</span>售后订单详情</td>';
blamerAfterDetailHtml += '</tr>';
blamerAfterDetailHtml += commThead;
var lossAmount = 0;
var lamount = 0;
if (afterDetail.length > 0)
{
Z.each(afterDetail, function(item, i)
{
var myselectYear=document.getElementById("year");
var myselectMonth=document.getElementById("month");
var year=myselectYear.value;
var month=myselectMonth.value;
var dateTime = new Date(year+"-"+month+"-01 00:00:00").getTime();
var lDateTime = new Date("2021-10-01 00:00:00").getTime();
if(dateTime >= lDateTime){
lossAmount = item.compensateAmount;
}else {
lossAmount = item.lossAmount;
}
lamount = item.lossAmount;
blamerAfterDetailHtml += '<tr align="center" class="z-h40 z-pointer" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'"> ';
blamerAfterDetailHtml += ' <td>'+item.designId+'</td>';
blamerAfterDetailHtml += ' <td>'+getAfterStatusHtml(item.afterStatus)+'</td>';
blamerAfterDetailHtml += ' <td>'+(lamount ? lamount : 0).toFixed(2)+'</td>';
blamerAfterDetailHtml += ' <td>'+(lossAmount ? lossAmount : 0).toFixed(2)+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designer+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.orderText ? item.orderText : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.afterFinishTime ? item.afterFinishTime : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.problemDesc ? item.problemDesc : '')+'</td>';
blamerAfterDetailHtml += '</tr>';
});
blamerAfterDetailHtml += '<tr valign="middle" class="z-h40 z-text-right z-bg-white">';
blamerAfterDetailHtml += ' <td colspan="11">共&nbsp;<span class="z-text-red">'+afterDetail.length+'</span>&nbsp;条数据&nbsp;&nbsp;</td>';
blamerAfterDetailHtml += '</tr>';
}
else
blamerAfterDetailHtml += commNorecod;
blamerAfterDetailHtml += ' </table>';
blamerAfterDetailHtml += '</div>'
blamerAfterDetailHtml += '</table>';
blamerAfterDetailHtml += '</div>';
Z("#blamerAfterDetailHtml").htmlc(blamerAfterDetailHtml);
}
</script>
${zhiqim_manager_breadcrumb("售后统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<!--<li onclick="Z.Location.href('personalAfterStatistics.htm');">个人售后统计</li>-->
<li class="z-active">售后订单统计</li>
<#if ZmrPathRule.check(request, "/designAfterReasonStatistics.htm")><li onclick="Z.L.href('designAfterReasonStatistics.htm')">售后原因统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td width="300px">查询日期:
<select id="year" name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option id="optionYear" value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select id="month" name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option id="optionMonth" value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
</td>
<#if Validates.isNotEmpty(orgList)>
<td width="250px">&nbsp;组&nbsp;&nbsp;织
<select name="orgId" class="z-select z-w180" data-role="z-select-search" data-class="${zmr_color_class}">
<option value="">请选择</option>
<#for item : orgList>
<option value="${item.getOrgId()}" <#if orgId == item.getOrgId()>selected</#if>>${item.getOrgName()}</option>
</#for>
</select>
</td>
</#if>
<td>
<button type="button" class="z-mg-l10 z-button ${zmr_color_class}" onclick="this.form.submit()">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="500" valign="top">
<div id="blamerResult" class="z-overflow-y-auto" style="max-height:760px">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>责任人</td>
<td>售后单数</td>
<td>损失金额</td>
</tr>
<tr class="z-h40">
<td colspan="5">暂时没有数据信息</td>
</tr>
</table>
</div>
</td>
<td width="*" id="blamerAfterDetailHtml" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,252 @@
<#def designatedPath="/personalRefundRateStat.htm"/>
<script>
var blamerAfterMap = new Z.HashMap();
var dataList = [];
//倒叙方法 [].reverse();
function getObject(json)
{
json = json.replace(/\r/g, '');
json = json.replace(/\n/g, '<br/>');
json = json.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
var reg = /(\u0000)|(\u0001)|(\u0002)|(\u0003)|(\u0004)|(\u0005)|(\u0006)|(\u0007)|(\u000b)|(\u000e)|(\u000f)|(\u0010)|(\u0011)|(\u0012)|(\u0013)|(\u0014)|(\u0015)|(\u0016)|(\u0017)|(\u0018)|(\u0019)|(\u001a)|(\u001b)|(\u001c)|(\u001d)|(\u001e)|(\u001f)/g;
//var reg = //g;
return Z.J.toObject(json.replace(reg, ""));
}
Z.onload(function()
{
<#for item : blamerAfterMap.values()>
blamerAfterMap.put('${item.getAfterBlamer()}', getObject('${item}'));
dataList.push(blamerAfterMap.get('${item.getAfterBlamer()}'));
</#for>
//显示数据
doShowBlamerList(dataList);
//显示详情
doShowDetail(dataList.length > 0 ? dataList[0].afterBlamer : '');
});
function doShowBlamerList(dataList)
{//显示责任人列表
dataList.sort(function (a, b){
a.afterCount = Z.V.isInteger(a.afterCount) ? a.afterCount : 0;
b.afterCount = Z.V.isInteger(b.afterCount) ? b.afterCount : 0;
a.lostAmount = Z.V.isFloat(a.lostAmount) ? a.lostAmount : 0;
b.lostAmount = Z.V.isFloat(b.lostAmount) ? b.lostAmount : 0;
var result1 = a.afterCount - b.afterCount;
result1 = result1 != 0 ? result1 : a.lostAmount - b.lostAmount;
return result1;
});
dataList.sort();
dataList.reverse();
var blamerResultHtml = "";
blamerResultHtml +='<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">';
blamerResultHtml +='<tr class="z-h40" bgcolor="'+"${zmr_thead_bgcolor}"+'">';
blamerResultHtml +=' <td>责任人</td>';
blamerResultHtml +=' <td>售后单数</td>';
blamerResultHtml +=' <td>损失金额</td>';
blamerResultHtml +='</tr>';
if (dataList.length > 0)
{
var totalCount = 0;
var totalAmount = 0;
Z.each(dataList, function(item, i){
var amount=(item.lostAmount ? item.lostAmount : 0)-(item.lossAmountCanceled ? item.lossAmountCanceled : 0);
blamerResultHtml +='<tr class="z-h40" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'" onclick="doShowDetail(\''+(item.afterBlamer)+'\')">';
blamerResultHtml +=' <td>'+(item.afterBlamer)+'</td>';
blamerResultHtml +=' <td>'+(item.afterCount ? item.afterCount : 0)+'</td>';
blamerResultHtml +=' <td>'+(amount>=0 ? amount : 0).toFixed(2)+'</td>';
blamerResultHtml +='</tr>';
totalCount += parseFloat((item.afterCount ? item.afterCount : 0));
totalAmount += parseFloat((amount>=0 ? amount : 0));
});
blamerResultHtml +='<tr class="z-h40">';
blamerResultHtml +=' <td>总计</td>';
blamerResultHtml +=' <td>'+totalCount+'</td>';
blamerResultHtml +=' <td>'+totalAmount.toFixed(2)+'</td>';
blamerResultHtml +='</tr>';
}
else
{
blamerResultHtml +='<tr class="z-h40">';
blamerResultHtml +=' <td colspan="5">暂时没有数据信息</td>';
blamerResultHtml +='</tr>';
}
Z("#blamerResult").htmlc(blamerResultHtml);
}
function getAfterStatusHtml(status)
{//获取售后窗台
<#for item : AfterConstants.getStatusList()>
if (''+status == ''+'${item.value()}')
{
var status${item_index} = "${AfterConstants.statusHtml(item.value())}";
return status${item_index};
}
</#for>
return '';
}
function doShowDetail(afterBlamer)
{//显示详情
var blamer = blamerAfterMap.get(afterBlamer);
var afterDetail = blamer ? blamer.afterDetail : [];
afterDetail = afterDetail ? afterDetail : [];
var canceledDetail = blamer ? blamer.canceledDetail : [];
canceledDetail = canceledDetail ? canceledDetail : [];
var commNorecod = '';
commNorecod += '<tr valign="middle" class="z-h40 z-text-center z-bg-white">';
commNorecod += ' <td colspan="11">暂无数据信息</td>';
commNorecod += '</tr>';
var commThead = ''
commThead += '<tr class="z-h40 z-text-center z-bg-gray">';
commThead += ' <td width="100">售后单号</td>';
commThead += ' <td width="100">设计单号</td>';
commThead += ' <td width="100">处理状态</td>';
commThead += ' <td width="100">损失金额</td>';
commThead += ' <td width="100">设计师</td>';
commThead += ' <td width="*">产品</td>';
commThead += ' <td width="90">售后创建时间</td>';
commThead += ' <td width="100">店铺</td>';
commThead += ' <td width="100">旺旺号</td>';
commThead += ' <td width="*">售后原因</td>';
commThead += '</tr>';
var blamerAfterDetailHtml = '';
blamerAfterDetailHtml += '<div class="z-overflow-y-auto" style="max-height:450px">'
blamerAfterDetailHtml += '<table class="z-table z-bordered z-bg-white z-text-center">';
blamerAfterDetailHtml += '<tr class="z-h40"> ';
blamerAfterDetailHtml += ' <td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<span class="z-text-red z-bold">['+afterBlamer+']</span>售后订单详情</td>';
blamerAfterDetailHtml += '</tr>';
blamerAfterDetailHtml += commThead;
if (afterDetail.length > 0)
{
Z.each(afterDetail, function(item, i)
{
blamerAfterDetailHtml += '<tr align="center" class="z-h40 z-pointer" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'"> ';
blamerAfterDetailHtml += ' <td>'+item.designAfsId+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designId+'</td>';
blamerAfterDetailHtml += ' <td>'+getAfterStatusHtml(item.afterStatus)+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.lossAmount ? item.lossAmount : 0).toFixed(2)+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designer+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.orderText ? item.orderText : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.afterCreateTime ? item.afterCreateTime : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.shopNick ? item.shopNick : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.buyerNick ? item.buyerNick : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.problemDesc ? item.problemDesc : '')+'</td>';
blamerAfterDetailHtml += '</tr>';
});
blamerAfterDetailHtml += '<tr valign="middle" class="z-h40 z-text-right z-bg-white">';
blamerAfterDetailHtml += ' <td colspan="11">共&nbsp;<span class="z-text-red">'+afterDetail.length+'</span>&nbsp;条数据&nbsp;&nbsp;</td>';
blamerAfterDetailHtml += '</tr>';
}
else
blamerAfterDetailHtml += commNorecod;
blamerAfterDetailHtml += ' </table>';
blamerAfterDetailHtml += '</div>'
//申诉成功部分
blamerAfterDetailHtml += '<div class="z-overflow-y-auto z-mg-t20" style="max-height:350px">'
blamerAfterDetailHtml += '<table class="z-table z-bordered z-bg-white z-text-center ">';
blamerAfterDetailHtml += '<tr class="z-h40"> ';
blamerAfterDetailHtml += ' <td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<span class="z-text-red z-bold">['+afterBlamer+']</span>申诉通过订单</td>';
blamerAfterDetailHtml += '</tr>';
blamerAfterDetailHtml += commThead;
//if (afterDetail.length > 0)
if (canceledDetail.length > 0)
{
var canceledLossAmount = 0;
Z.each(canceledDetail, function(item, i)
{
blamerAfterDetailHtml += '<tr align="center" class="z-h40 z-pointer" bgcolor="'+(i%2 != 0 ? '#f3fdfc' : '#ffffff')+'"> ';
blamerAfterDetailHtml += ' <td>'+item.designAfsId+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designId+'</td>';
blamerAfterDetailHtml += ' <td>'+getAfterStatusHtml(item.afterStatus)+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.lossAmount ? item.lossAmount : 0).toFixed(2)+'</td>';
blamerAfterDetailHtml += ' <td>'+item.designer+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.orderText ? item.orderText : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.afterCreateTime ? item.afterCreateTime : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.shopNick ? item.shopNick : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.buyerNick ? item.buyerNick : '')+'</td>';
blamerAfterDetailHtml += ' <td>'+(item.problemDesc ? item.problemDesc : '')+'</td>';
blamerAfterDetailHtml += '</tr>';
canceledLossAmount += (item.lossAmount ? item.lossAmount : 0);
});
blamerAfterDetailHtml += '<tr valign="middle" class="z-h40 z-text-right z-bg-white">';
blamerAfterDetailHtml += ' <td colspan="11">损失金额:<span class="z-text-red">'+canceledLossAmount.toFixed(2)+'</span>&nbsp;&nbsp;共&nbsp;<span class="z-text-red">'+canceledDetail.length+'</span>&nbsp;条数据&nbsp;&nbsp;</td>';
blamerAfterDetailHtml += '</tr>';
}
else
blamerAfterDetailHtml += commNorecod;
blamerAfterDetailHtml += '</table>';
blamerAfterDetailHtml += '</div>';
Z("#blamerAfterDetailHtml").htmlc(blamerAfterDetailHtml);
}
</script>
${zhiqim_manager_breadcrumb("售后统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">个人售后统计</li>
<#if ZmrPathRule.check(request, "/designAfterStatistics.htm")><li onclick="Z.Location.href('designAfterStatistics.htm');">售后订单统计</li></#if>
<#if ZmrPathRule.check(request, "/designAfterCreateStatistics.htm")><li onclick="Z.L.href('designAfterCreateStatistics.htm')">售后创建统计</li></#if>
<#if ZmrPathRule.check(request, "/designAfterReasonStatistics.htm")><li onclick="Z.L.href('designAfterReasonStatistics.htm')">售后原因统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="button" class="z-mg-l10 z-button ${zmr_color_class}" onclick="this.form.submit()">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<div id="blamerResult" class="z-overflow-y-auto" style="max-height:760px"></div>
</td>
<td width="*" id="blamerAfterDetailHtml" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,103 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var backMergeCount = '${backMergeCount}';
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '印前退回统计(总计:'+backMergeCount+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '退回原因分类占比',
colorByPoint: true,
data:[
<#for item : pieMap.keySet()>
{name: '${item}',y: ${pieMap.get(item)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("退回原因统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('orderBackEffectStat.htm');">退回数量统计</li>
<li class="z-active">退回原因统计</li>
<li onclick="Z.Location.href('sectionFinalizeCompleteStat.htm');">部门退回统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/beforecauseChart.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>退回时间:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r30 " value="${endDate}">
<button class="z-large z-w120 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left" style="text-align:center">
<tr class="z-bg-gray">
<td width="20%">退回原因</td>
<td width="20%">退回单数</td>
<td width="20%">退回单数占比</td>
<td width="20%">退回单金额</td>
<td width="20%">退回单金额占比</td>
</tr>
<#for item : modelList>
<tr>
<td>${item.getBackCause()}</td>
<td>${item.getBackCount()}</td>
<td>${CalculationUtil.calculatePercent(item.getBackCount(),backMergeCount)}</td>
<td>${Amounts.toYuan(item.getBackMoney())}</td>
<td>${CalculationUtil.calculatePercent(item.getBackMoney(),backMergeMoney)}</td>
</tr>
</#for>
<tr class="z-bold">
<td>总计</td>
<td>${backMergeCount}</td>
<td>100%</td>
<td>${Amounts.toYuan(backMergeMoney)}</td>
<td>100%</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,93 @@
<script>
Z.onload(function()
{
draftOrderBackStatInfo(1);
});
var designer='${designer}';
function doQueryDesigner(designers)
{
designer = designers;
draftOrderBackStatInfo(1);
}
function draftOrderBackStatInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("draftOrderBackEffectStatInfo");
ajax.addParam("page",page);
ajax.addParam("startDate", Z("#startDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("审稿退回统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">初稿退回统计</li>
<li onclick="Z.Location.href('/endOrderBackStat.htm');">定稿退回统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="/draftOrderBackStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>初稿日期:
<input name="startDate" id="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${startDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${endDate}">
&emsp;&emsp;设计师:
<input name="designer" id="designer" class="z-input ${zmr_color_class} z-w120" >
&emsp;&emsp;<button class="z-button z-large z-w120 z-mg-r15 ${zmr_color_class}">查询</button><button class="z-button z-large" type="button" onclick="Z.FM.clearForm(this.form);">清空</button>
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40">
<td>序号</td>
<td>设计师</td>
<td>初稿数</td>
<td>通过数</td>
<td>通过率</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doQueryDesigner('${item.getDesigner()}');">
<td>${item_index + 1}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderCount()}</td>
<td>${item.getOrderPassCount()}</td>
<td>${item.getPassRatio()}%</td>
</tr>
</#for>
<#if pageResult.list() == 0>
${zhiqim_manager_no_record(5, "暂时没有统计信息")}
</#if>
</table>
${zhiqim_manager_paging(pageResult, "/draftOrderBackStat.htm")}
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,35 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>退回单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="110">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="80">金额</td>
<td width="200">退回原因</td>
<td width="150">初稿时间</td>
<td width="150">退回时间</td>
</tr>
<#if infoPageResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="8">无退回订单信息</td>
</tr>
</#if>
<#for item : infoPageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td><span class="z-pointer z-text-ellipsis" style="width:270px" data-role="z-tooltip" data-options="placement:top;align:right;top:10;border-color:#d3d3d3;width:250px" data-text="${item.getOrderText()}<hr style='margin:0px;'>产品金额:${Amounts.toYuanMustRadix(item.getAmount())}">${item.getOrderText()}</span></td>
<td>${Amounts.toYuan(item.getAmount())}</td>
<td>${item.getDraftBackReason()}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
<td>${Sqls.toDateTimeString(item.getDraftBackTime())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(infoPageResult, "draftOrderBackStatInfo")}
@@ -0,0 +1,93 @@
<script>
Z.onload(function()
{
endOrderBackStatInfo(1);
});
var designer='${designer}';
function doQueryDesigner(designers)
{
designer = designers;
endOrderBackStatInfo(1);
}
function endOrderBackStatInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("endOrderBackEffectStatInfo");
ajax.addParam("page",page);
ajax.addParam("startDate", Z("#startDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("审稿退回统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('/draftOrderBackStat.htm');">初稿退回统计</li>
<li class="z-active">定稿退回统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="/endOrderBackStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>定稿日期:
<input name="startDate" id="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${startDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${endDate}">
&emsp;&emsp;设计师:
<input name="designer" id="designer" class="z-input ${zmr_color_class} z-w120" >
&emsp;&emsp;<button class="z-button z-large z-w120 z-mg-r15 ${zmr_color_class}">查询</button><button class="z-button z-large" type="button" onclick="Z.FM.clearForm(this.form);">清空</button>
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40">
<td>序号</td>
<td>设计师</td>
<td>定稿数</td>
<td>通过数</td>
<td>通过率</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doQueryDesigner('${item.getDesigner()}');">
<td>${item_index + 1}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderCount()}</td>
<td>${item.getOrderPassCount()}</td>
<td>${item.getPassRatio()}%</td>
</tr>
</#for>
<#if pageResult.list() == 0>
${zhiqim_manager_no_record(3, "暂时没有退回统计信息")}
</#if>
</table>
${zhiqim_manager_paging(pageResult, "/endOrderBackStat.htm")}
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,35 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>退回单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="110">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="80">金额</td>
<td width="200">退回原因</td>
<td width="150">定稿时间</td>
<td width="150">退回时间</td>
</tr>
<#if infoPageResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="9">暂不存在退回订单信息</td>
</tr>
</#if>
<#for item : infoPageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td><span class="z-pointer z-text-ellipsis" style="width:270px" data-role="z-tooltip" data-options="placement:top;align:right;top:10;border-color:#d3d3d3;width:250px" data-text="${item.getOrderText()}<hr style='margin:0px;'>产品金额:${Amounts.toYuanMustRadix(item.getAmount())}">${item.getOrderText()}</span></td>
<td>${Amounts.toYuan(item.getAmount())}</td>
<td>${item.getEndBackReason()}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
<td>${Sqls.toDateTimeString(item.getEndBackTime())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(infoPageResult, "endOrderBackStatInfo")}
@@ -0,0 +1,90 @@
<script>
Z.onload(function()
{
doOrderBackEffectStatInfo(1);
});
var designer='${designer}';
function doQueryDesigner(designers)
{
designer = designers;
doOrderBackEffectStatInfo(1);
}
function doOrderBackEffectStatInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doOrderBackEffectStatInfo");
ajax.addParam("page",page);
ajax.addParam("startDate", Z("#startDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("审稿退回统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">退回数量统计</li>
<li onclick="Z.Location.href('/beforecauseChart.htm');">退回原因统计</li>
<li onclick="Z.Location.href('/sectionFinalizeCompleteStat.htm');">部门退回统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="/orderBackEffectStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>退回日期:
<input name="startDate" id="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${startDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${endDate}">
&emsp;&emsp;设计师:
<input name="designer" id="designer" class="z-input ${zmr_color_class} z-w120" >
&emsp;&emsp;<button class="z-button z-large z-w120 z-mg-r15 ${zmr_color_class}">查询</button><button class="z-button z-large" type="button" onclick="Z.FM.clearForm(this.form);">清空</button>
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40">
<td>序号</td>
<td>设计师</td>
<td>退回次数</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doQueryDesigner('${item.getKey()}');">
<td>${item_index + 1}</td>
<td>${item.getKey()}</td>
<td>${item.getValue()}</td>
</tr>
</#for>
<#if pageResult.list() == 0>
${zhiqim_manager_no_record(3, "暂时没有退回统计信息")}
</#if>
</table>
${zhiqim_manager_paging(pageResult, "/orderBackEffectStat.htm")}
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,35 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>退回单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="110">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="80">金额</td>
<td width="200">退回原因</td>
<td width="150">定稿时间</td>
<td width="150">退回时间</td>
</tr>
<#if infoPageResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="9">暂不存在退回订单信息</td>
</tr>
</#if>
<#for item : infoPageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td><span class="z-pointer z-text-ellipsis" style="width:270px" data-role="z-tooltip" data-options="placement:top;align:right;top:10;border-color:#d3d3d3;width:250px" data-text="${item.getOrderText()}<hr style='margin:0px;'>产品金额:${Amounts.toYuanMustRadix(item.getAmount())}">${item.getOrderText()}</span></td>
<td>${Amounts.toYuan(item.getAmount())}</td>
<td>${item.getCheckBackReason()}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
<td>${Sqls.toDateTimeString(item.getCreateLogTime())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(infoPageResult, "doOrderBackEffectStatInfo")}
@@ -0,0 +1,117 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var orgAllOrder = '${passOrderSum}';
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '部门定稿统计(总定稿量:'+orgAllOrder+''},
colors: ['#f7a35c', '#e4d354'],
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '部门定稿占比',
colorByPoint: true,
data:[
<#for item : pieMap.keySet()>
{name: '${item}',y: ${pieMap.get(item)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("部门退回统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('orderBackEffectStat.htm');">退回数量统计</li>
<li onclick="Z.Location.href('beforecauseChart.htm');">退回原因统计</li>
<li class="z-active">部门退回统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/sectionFinalizeCompleteStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2017..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="submit" class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left" style="text-align:center">
<tr class="z-bold">
<td width="20%">部门名称</td>
<td width="10%">定稿数</td>
<td width="10%">退回单数</td>
<td width="10%">退回次数</td>
<td width="15%">退回率</td>
<td width="15%">定稿占比</td>
<td width="20%">退回单金额</td>
</tr>
<#for item : statList>
<tr>
<td>${item.getDeptName()}</td>
<td>${item.getDeptFinalizeCount()}</td>
<td>${item.getDeptBackCount()}</td>
<td>${item.getDeptBackSum()}</td>
<td>${CalculationUtil.calculatePercent(item.getDeptBackSum(),item.getDeptFinalizeCount())}</td>
<td>${CalculationUtil.orgOrderPercent(item.getDeptFinalizeCount(),passOrderSum)}</td>
<td>${Amounts.toYuanMustRadix(item.getDeptBackMoney())}</td>
</tr>
</#for>
<tr class="z-bold">
<td>总计</td>
<td>${passOrderSum}</td>
<td>${backSum}</td>
<td>${backRepeatSum}</td>
<td>${CalculationUtil.calculatePercent(backRepeatSum,passOrderSum)}</td>
<td>${CalculationUtil.calculatePercent(passOrderSum,passOrderSum)}</td>
<td>${Amounts.toYuanMustRadix(backAmountSum)}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,123 @@
<script>
Z.onload(function()
{
doQueryDesigner('${designer}');
});
var designer;
function doQueryDesigner(designers)
{
designer = designers;
doQueryDesignNotCompleteOrderInfo(1);
}
function doQueryDesignNotCompleteOrderInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryDesignNotCompleteOrderInfo");
ajax.addParam("page",page);
ajax.addParam("startDate", Z("#startDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.addParam("orgId", Z("#orgId").val());
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
function doProgressNote(id)
{//进度备注
var designId =id
if (Z.V.isEmpty(designId))
{
designId = Z.FM.getChecked("designId");
if (Z.V.isEmpty(designId))
{
Z.alert("请选择一条订单");
return;
}
}
var dialog = new Z.Dialog();
dialog.title = "订单["+designId+"]进度备注";
dialog.url = "/progressNote.htm?designId="+designId;
dialog.width = 1000;
dialog.height = 630;
dialog.execute();
}
</script>
${zhiqim_manager_breadcrumb("设计师定稿率统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<#if ZmrPathRule.check(request, "/designerPerformance.htm")><li onclick="Z.Location.href('designerPerformance.htm');">设计师绩效统计</li></#if>
<li class="z-active">设计师定稿率统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="completeDesignRateStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>接单日期:
<input name="startDate" id="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${startDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120"value="${endDate}">
<#if isOrgRoot>&emsp;&emsp;设计师:<input name="designer" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designer}" maxlength="64" placeholder="设计师"></#if>
&emsp;&emsp;
组织:
<select name="orgId" id="orgId" class="z-select z-w180" data-role="z-select" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : orgList>
<option value="${item.getOrgId()}" <#if item.getOrgId() == orgId>selected</#if>>${item.getOrgName()}</option>
</#for>
</select>
&emsp;&emsp;
<button class="z-mg-l10 z-button ${zmr_color_class}" onclick="this.form.submit()">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="420" valign="top">
<table id="statTable" class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40">
<td>设计师</td>
<td>接单量</td>
<td>定稿量</td>
<td>定稿率</td>
</tr>
<#for item : modelList>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doQueryDesigner('${item.getDesigner()}');">
<td>${item.getDesigner()}</td>
<td>${item.getOrderNum()}</td>
<td>${item.getOrderEndNum()}</td>
<td>${item.getEndProportion()}%</td>
</#for>
<#if modelList.size() == 0>
${zhiqim_manager_no_record(4, "暂时没有设计师定稿率统计信息")}
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,149 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
Z.onload(function(){
computeEfficiency();
});
function computeEfficiency()
{//计算效率
Z.each(Z("span[id^=time_]"), function(span, i)
{
var minute = span.attributes["data-minute"].value*1;
var num = span.attributes["data-num"].value*1;
minute = parseInt(minute/num);
var hour;
var minute;
if (minute/60 >0)
{
hour = parseInt(minute/60);
minute = minute%60;
}
var timeHtml = "";
if (hour >0)
timeHtml += hour+"小时";
if (minute >0)
timeHtml += minute+"分钟";
Z(span).html(timeHtml);
});
}
function doSearch(designer,prdTypeId)
{
if (Z.V.isEmpty(designer))
{
Z.alert("设计师不能为空");
return;
}
if (Z.V.isEmpty(prdTypeId))
{
Z.alert("类型不能为空");
return;
}
var beginDate = '${beginDate}';
var endDate = '${endDate}';
var dialog = new Z.Dialog();
dialog.title = "["+designer+"]定稿订单时效详情";
dialog.url = "/completeOrderTimelinessInfo.htm?beginDate="+beginDate+"&endDate="+endDate+"&designer="+designer+"&prdTypeId="+prdTypeId;
dialog.width = 1650;
dialog.height = 695;
dialog.execute();
}
</script>
${zhiqim_manager_breadcrumb("定稿时效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!-- <li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li> -->
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('designOrderTypeStat.htm');">订单类型统计</li>
<li onclick="Z.Location.href('draftOrderTimeliness.htm');">初稿时效统计</li>
<li onclick="Z.Location.href('draftOrderOrgTimeliness.htm');">初稿时效统计(组织)</li>
<li class="z-active">定稿时效统计</li>
<#if ZmrPathRule.check(request, "/selfDraftModifyOrderStat.htm")><li onclick="Z.Location.href('selfDraftModifyOrderStat.htm');">改稿订单统计</li></#if>
<#if ZmrPathRule.check(request, "/designOrderCountStat.htm")><li onclick="Z.Location.href('designOrderCountStat.htm');">设计总订单数量统计</li></#if>
<#if ZmrPathRule.check(request, "/draftOrderTypeTimeliness.htm")><li onclick="Z.Location.href('draftOrderTypeTimeliness.htm');">初稿产品时效统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrderTypeTimeliness.htm")><li onclick="Z.Location.href('completeOrderTypeTimeliness.htm');">定稿产品时效统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/completeOrderTimeliness.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>定稿日期:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r20 " value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
${zhiqim_manager_tr_title(1 , "定稿时效统计详情")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="100">操作员</td>
<#for type : typeList>
<#if type.getTypeSeq() lte 9>
<td width="100">${type.getTypeName()}</td>
</#if>
</#for>
<td width="100">其他</td>
<td width="100">总数量</td>
<td width="100">总时长</td>
<td width="100">平均耗时</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40" <#if item_index % 2 == 0>bgcolor="#f3fdfc"</#if>>
<td>${item.getDesigner()}</td>
<#for type : typeList>
<#if type.getTypeSeq() lte 9>
<td>
<#var num = item.getNumberMap().get(type.getTypeName())/>
<#var time =item.getTimeMap().get(type.getTypeName())/>
<#if num gt 0 && time gt 0>
<a onclick="doSearch('${item.getDesigner()}','${type.getTypeId()}');">
<span id="time_${item.getDesigner()}_${type.getTypeId()}" data-minute="${time}" data-num="${num}"></span><br>${num}单)
</a>
</#if>
</td>
</#if>
</#for>
<td>
<#var num = item.getNumberMap().get(type.getTypeName())/>
<#var time =item.getTimeMap().get(type.getTypeName())/>
<#if num gt 0 && time gt 0>
<span id="time_${item.getDesigner()}_other" data-minute="${item.getTimeMap().get("其他")}" data-num="${item.getNumberMap().get("其他")}"></span><br>${item.getNumberMap().get("其他")}单)
</#if>
</td>
<td>${item.getAllCount()}</td>
<td><span id="time_${item.getDesigner()}_allTime" data-minute="${item.getAllTime()}" data-num="1"></span></td>
<td><span id="time_${item.getDesigner()}_average" data-minute="${item.getAllTime()}" data-num="${item.getAllCount()}"></span></td>
</tr>
</#for>
<#if pageResult.size() == 0>
<tr class="z-h40">
<td colspan="${typeList.size()+1}" class="z-text-center">暂无定稿时效统计详情</td>
</tr>
</#if>
${zhiqim_manager_paging(pageResult, "completeOrderTimeliness.htm")}
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,105 @@
<script>
Z.onload(function(){
computeEfficiency();
});
function computeEfficiency()
{//计算效率
Z.each(Z("span[id^=time_]"), function(span, i)
{
var minute = span.attributes["data-minute"].value*1;
var num = span.attributes["data-num"].value*1;
minute = parseInt(minute/num);
var hour;
var minute;
if (minute/60 >0)
{
hour = parseInt(minute/60);
minute = minute%60;
}
var timeHtml = "";
if (hour >0)
timeHtml += hour+"小时";
if (minute >0)
timeHtml += minute+"分钟";
Z(span).html(timeHtml);
});
}
</script>
${zhiqim_manager_breadcrumb("定稿产品时效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!-- <li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li> -->
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('draftOrderTimeliness.htm');">初稿时效统计</li>
<li onclick="Z.Location.href('draftOrderOrgTimeliness.htm');">初稿时效统计(组织)</li>
<li onclick="Z.Location.href('completeOrderTimeliness.htm');">定稿时效统计</li>
<#if ZmrPathRule.check(request, "/designOrderCountStat.htm")><li onclick="Z.Location.href('designOrderCountStat.htm');">设计总订单数量统计</li></#if>
<#if ZmrPathRule.check(request, "/draftOrderTypeTimeliness.htm")><li onclick="Z.Location.href('draftOrderTypeTimeliness.htm');">初稿产品时效统计</li></#if>
<li class="z-active">定稿产品时效统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/completeOrderTypeTimeliness.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>定稿日期:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r20 " value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
${zhiqim_manager_tr_title(4, "定稿产品时效统计详情")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="150">产品类型</td>
<td width="150">数量</td>
<td width="150">总时长</td>
<td width="150">平均耗时</td>
</tr>
<#var allcount = 0/>
<#var allTime = 0/>
<#var typeMap = DesignTypeDao.mapAll()/>
<#for item : timelinessList>
<tr class="z-text-center z-h40" <#if item_index % 2 == 0>bgcolor="#f3fdfc"</#if>>
<td><#if Validates.isNotEmpty(typeMap) && typeMap.containsKey(item.getTypeId())>${typeMap.get(item.getTypeId()).getTypeName(item.getTypeId())}</#if></td>
<td>${item.getCount()}</td>
<td><span id="time_${item.getTypeId()}" data-minute="${item.getTime()}" data-num="1"></span></td>
<td><span id="time_${item.getTypeId()}_average" data-minute="${item.getTime()}" data-num="${item.getCount()}"></span></td>
</tr>
<#var allcount = allcount + item.getCount()/>
<#var allTime = allTime + item.getTime()/>
</#for>
<#if timelinessList.size() == 0>
${zhiqim_manager_no_record(4, "暂无定稿产品时效统计详情")}
<#else>
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td>总计</td>
<td>${allcount}</td>
<td><span id="time_all" data-minute="${allTime}" data-num="1"></span></td>
<td><span id="time_all_average" data-minute="${allTime}" data-num="${allcount}"></span></td>
</tr>
</#if>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,98 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var orgOrderEndSum = '${orgOrderEndSum}';
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '组织定稿率统计(总定稿量:'+orgOrderEndSum+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '组织定稿占比',
colorByPoint: true,
data:[
<#for item : pieMap.keySet()>
{name: '${item}',y: ${pieMap.get(item)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("组织定稿率统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!--<li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li>
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li> -->
<#if ZmrPathRule.check(request, "/designerPerformance.htm")><li onclick="Z.Location.href('designerPerformance.htm');">设计师绩效统计</li></#if>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<li class="z-active">组织定稿率统计</li>
<li onclick="Z.Location.href('designOrderTypeStat.htm');">订单类型统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/completeOrgRateStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>创建日期:
<input name="startDate" id="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${startDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120"value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left" style="text-align:center">
<tr class="z-bold">
<td width="20%">组织名称</td>
<td width="20%">接单量</td>
<td width="20%">定稿量</td>
<td width="30%">定稿率</td>
</tr>
<#for item : modelList>
<tr>
<td>${item.getOrgName()}</td>
<td>${item.getOrgOrderNum()}</td>
<td>${item.getOrgOrderEndNum()}</td>
<td>${item.getOrgEndProportion()}%</td>
</tr>
</#for>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,121 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var orgAllOrder = '${passOrderSum}';
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '组织定稿统计(总定稿量:'+orgAllOrder+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '组织定稿占比',
colorByPoint: true,
data:[
<#for item : pieMap.keySet()>
{name: '${item}',y: ${pieMap.get(item)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("组织定稿统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!--<li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li>
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li> -->
<#if ZmrPathRule.check(request, "/designerPerformance.htm")><li onclick="Z.Location.href('designerPerformance.htm');">设计师绩效统计</li></#if>
<li class="z-active">组织定稿统计</li>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('designOrderTypeStat.htm');">订单类型统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designFinalizeOrgCase.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="submit" class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left" style="text-align:center">
<tr class="z-bold">
<td width="20%">组织名称</td>
<td width="10%">定稿数</td>
<td width="10%">退回单数</td>
<td width="10%">退回次数</td>
<td width="15%">退回率</td>
<td width="15%">定稿占比</td>
<td width="20%">退回单金额</td>
</tr>
<#for item : orgCaseList>
<tr>
<td>${item.getOrgName()}</td>
<td>${item.getPassOrderCount()}</td>
<td>${item.getBackOrderCount()}</td>
<td>${item.getBackOrderRepeatCount()}</td>
<td>${CalculationUtil.calculatePercent(item.getBackOrderRepeatCount(),item.getPassOrderCount())}</td>
<td>${CalculationUtil.orgOrderPercent(item.getPassOrderCount(),passOrderSum)}</td>
<td>${Amounts.toYuanMustRadix(item.getBackOrderMoneySum())}</td>
</tr>
</#for>
<tr class="z-bold">
<td>总计</td>
<td>${passOrderSum}</td>
<td>${backOrderSum}</td>
<td>${backRepeatSum}</td>
<td>${CalculationUtil.calculatePercent(backRepeatSum,passOrderSum)}</td>
<td>${CalculationUtil.calculatePercent(passOrderSum,passOrderSum)}</td>
<td>${Amounts.toYuanMustRadix(backAmountSum)}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,69 @@
${zhiqim_manager_breadcrumb("设计总订单数量统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!-- <li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li> -->
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('draftOrderTimeliness.htm');">初稿时效统计</li>
<li onclick="Z.Location.href('draftOrderOrgTimeliness.htm');">初稿时效统计(组织)</li>
<li onclick="Z.Location.href('completeOrderTimeliness.htm');">定稿时效统计</li>
<li class="z-active">设计总订单数量统计</li>
<#if ZmrPathRule.check(request, "/draftOrderTypeTimeliness.htm")><li onclick="Z.Location.href('draftOrderTypeTimeliness.htm');">初稿产品时效统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrderTypeTimeliness.htm")><li onclick="Z.Location.href('completeOrderTypeTimeliness.htm');">定稿产品时效统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm">
<table class="z-table z-bordered z-pd6 z-bg-white z-mg-b20">
<tr>
<td width="25%">录单时间:
<input name="startDate" class="z-input z-w90 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${startDate}"> -
<input name="endDate" class="z-input z-w90 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${endDate}">
</td>
<td colspan="3">
<button class="z-button z-large z-w120 z-mg-r15 ${zmr_color_class}">查询</button>
<button class="z-button z-large" type="button" onclick="Z.FM.clearForm(this.form);">清空</button>
</td>
</tr>
</table>
</form>
<#var typeList = DesignTypeDao.listAll()/>
<table class="z-table z-bordered z-h40-tr z-pd6 z-bg-white z-text-center">
${zhiqim_manager_tr_title(13, "设计总订单数量统计")}
<tr bgcolor="${zmr_thead_bgcolor}">
<td width="150">日期</td>
<td width="150">总设计订单</td>
<#if Validates.isNotEmpty(typeList)>
<#for type : typeList>
<#if type_index lte 9><td width="150">${type.getPrdTypeName()}</td></#if>
</#for>
</#if>
<td width="150">其他</td>
</tr>
${zhiqim_manager_tr_no_record(list, 13, "设计总订单数量统计暂无信息")}
<#for item : list>
<#var typeMap = item.getTypeMap()/>
<tr>
<td>${item.getDate()}</td>
<td>${item.getSumCount()}</td>
<#if Validates.isNotEmpty(typeList)>
<#for type : typeList>
<#if type_index lte 9><td>${typeMap.get(type.getTypeId())}</td></#if>
</#for>
</#if>
<td>${item.getSumCount() - item.getElseCount()}</td>
</tr>
</#for>
</table>
${zhiqim_manager_list(list.size())}
${zhiqim_manager_content_end()}
@@ -0,0 +1,90 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
</script>
${zhiqim_manager_breadcrumb("订单类型统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!--<li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li>
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li> -->
<#if ZmrPathRule.check(request, "/designerPerformance.htm")><li onclick="Z.Location.href('designerPerformance.htm');">设计师绩效统计</li></#if>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li class="z-active">订单类型统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form action="designOrderTypeStat.htm" method="post">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>定稿日期:
<input id="beginDate" name="beginDate" class="z-input z-w90 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${beginDate}"> -
<input id="endDate" name="endDate" class="z-input z-mg-l3 z-w90 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${endDate}">
<button class="z-button z-w60 z-mg-l10 ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
${zhiqim_manager_tr_title(20,"订单类型统计详情")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="100">设计师</td>
<td width="80">3-5款</td>
<td width="80">6-8款</td>
<td width="80">9-11款</td>
<td width="80">12款以上</td>
<td width="100">常规后加工</td>
<td width="100">特殊后加工</td>
<td width="100">支援订单</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(100-150)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(150-200)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(200-250)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(250-300)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(300-350)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(350-400)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(400-450)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(450-500)</td>
<td width="100">&emsp;大金额&emsp;&nbsp;(500以上)</td>
<#if ZmrPathRule.check(request, "/designOrderTypeStat.htm")><td width="100">奖励金额</td></#if>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40">
<td>${item.getDesigner()}</td>
<td>${item.getMultiple3_5()}</td>
<td>${item.getMultiple6_8()}</td>
<td>${item.getMultiple9_11()}</td>
<td>${item.getMultiple12()}</td>
<td>${item.getNormalProcessing()}</td>
<td>${item.getSpecialProcessing()}</td>
<td>${item.getApplyOrder()}</td>
<td>${item.getAmount100_150()}</td>
<td>${item.getAmount150_200()}</td>
<td>${item.getAmount200_250()}</td>
<td>${item.getAmount250_300()}</td>
<td>${item.getAmount300_350()}</td>
<td>${item.getAmount350_400()}</td>
<td>${item.getAmount400_450()}</td>
<td>${item.getAmount450_500()}</td>
<td>${item.getAmount500()}</td>
<#if ZmrPathRule.check(request, "/designOrderTypeStat.htm")><td>${Amounts.toYuan(item.getAmount())}</td></#if>
</tr>
</#for>
<#if pageResult.size() == 0>
${zhiqim_manager_no_record(20, "暂时没有订单类型统计信息")}
</#if>
</table>
${zhiqim_manager_paging(pageResult, "/designOrderTypeStat.htm")}
${zhiqim_manager_content_end()}
@@ -0,0 +1,107 @@
<script>
Z.onload(function(){
doQueryDesigner('${designer}');
});
var designer;
function doQueryDesigner(designers){
designer = designers;
doQueryCompleteOrderInfo(1);
}
function doQueryCompleteOrderInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryCompleteOrderInfo");
ajax.addParam("page",page);
ajax.addParam("beginDate",Z("#beginDate").val());
ajax.addParam("endDate",Z("#endDate").val());
ajax.addParam("designer",designer);
ajax.addParam("orgId", Z("#orgId").val());
ajax.addParam("query",${queryFlag});
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
function exportDatas(){
var form = document.theForm;
form.method="post";
form.action= "/exportPerformance.htm";
form.submit();
setTimeout(form.action= "/designerPerformance.htm",300);
}
</script>
${zhiqim_manager_breadcrumb("设计师绩效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<li class="z-active">设计师绩效统计</li>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="/designerPerformance.htm" id="designerPerformance">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>定稿日期:
<input name="beginDate" id="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${beginDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${endDate}">
<input type="hidden" name="query" id="query" value="1">
&emsp;设计师:<input name="designer" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designer}" maxlength="64" placeholder="设计师">
&emsp;
组织:
<select name="orgId" id="orgId" class="z-select z-w180" data-role="z-select" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : orgList>
<option value="${item.getOrgId()}" <#if item.getOrgId() == orgId>selected</#if>>${item.getOrgName()}</option>
</#for>
</select>
&emsp;&emsp;
<button class="z-mg-l10 z-button ${zmr_color_class}" onclick="Z.loading({shadow:true});document.getElementById('designerPerformance').submit();">查询</button>
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="350" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40 z-bold">
<td colspan="3" align="left" style="padding-left:15px;">定稿总数:${endCount}&emsp;绩效总金额:${Amounts.toYuan(performanceCount)}元</td>
</tr>
<tr class="z-h40">
<td width="120">设计师</td>
<td width="100">定稿单数</td>
<td width="*">绩效</td>
</tr>
<#for item : pageModelList>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doQueryDesigner('${item.getDesigner()}')">
<td>${item.getDesigner()}</td>
<td>${item.getOrderEndCount()}</td>
<td>${Amounts.toYuan(item.getDesignPerformance())}元</td>
</tr>
</#for>
</table>
</td>
<td width="*" id="result" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,105 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
Z.onload(function()
{
doQueryDraftOrderStatInfo(1);
});
var designer;
function doQueryDesigner(designers)
{
designer = designers;
doQueryDraftOrderStatInfo(1);
}
function doQueryDraftOrderStatInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryDraftOrderStatInfo");
ajax.addParam("page",page);
ajax.addParam("beginDate", Z("#beginDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.addParam("querys",${querys});
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("初稿统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li class="z-active">初稿统计</li>
<#if ZmrPathRule.check(request, "/designerPerformance.htm")><li onclick="Z.Location.href('designerPerformance.htm');">设计师绩效统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="draftOrderConvert.htm" id="draftOrderConvertForm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td width="350px">初稿日期:
<input name="beginDate" id="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="<#if Validates.isNotEmpty(beginDate)>${beginDate}<#else>${DateTimes.getDateString()}</#if>"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120"value="<#if Validates.isNotEmpty(endDate)>${endDate}<#else>${DateTimes.getDateString()}</#if>">
<input type="hidden" name="query" id="query" value="1" >
</td>
<#if Validates.isNotEmpty(orgList)>
<td width="250px">&nbsp;组&nbsp;&nbsp;织
<select name="orgId" class="z-select z-w180" data-role="z-select-search" data-class="${zmr_color_class}">
<#for item : orgList>
<option value="${item.getOrgId()}" <#if orgId == item.getOrgId()>selected</#if>>${item.getOrgName()}</option>
</#for>
</select>
</td>
</#if>
<td>
<button class="z-mg-l10 z-button ${zmr_color_class}" onclick="Z.loading({shadow: true});document.getElementById('draftOrderConvertForm').submit();">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="320" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40">
<td>序号</td>
<td>设计师</td>
<td>初稿单数</td>
</tr>
<#for item : draftList>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doQueryDesigner('${item.getDesignName()}');">
<td>${item_index + 1}</td>
<td>${item.getDesignName()}</td>
<td>${item.getDraftOrderCount()}</td>
</tr>
</#for>
<#if draftList.size() == 0>
${zhiqim_manager_no_record(3, "暂时没有统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="2">汇总</td>
<td>${allDraftOrderCount}</td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,133 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
Z.onload(function(){
computeEfficiency();
});
function computeEfficiency()
{//计算效率
Z.each(Z("span[id^=time_]"), function(span, i)
{
var minute = span.attributes["data-minute"].value*1;
var num = span.attributes["data-num"].value*1;
minute = parseInt(minute/num);
var hour;
var minute;
if (minute/60 >0)
{
hour = parseInt(minute/60);
minute = minute%60;
}
var timeHtml = "";
if (hour >0)
timeHtml += hour+"小时";
if (minute >0)
timeHtml += minute+"分钟";
Z(span).html(timeHtml);
});
}
function doSearch(orgId,orgName)
{
if (Z.V.isEmpty(orgId))
{
Z.alert("组织ID不能为空");
return;
}
var beginDate = '${beginDate}';
var endDate = '${endDate}';
var dialog = new Z.Dialog();
dialog.title = "["+orgName+"]初稿订单时效详情";
dialog.url = "/draftOrderOrgTimelinessInfo.htm?beginDate="+beginDate+"&endDate="+endDate+"&orgId="+orgId;
dialog.width = 1650;
dialog.height = 695;
dialog.execute();
}
</script>
${zhiqim_manager_breadcrumb("初稿时效统计(组织)")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!-- <li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li> -->
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('designOrderTypeStat.htm');">订单类型统计</li>
<li onclick="Z.Location.href('draftOrderTimeliness.htm');">初稿时效统计</li>
<li class="z-active">初稿时效统计(组织)</li>
<li onclick="Z.Location.href('completeOrderTimeliness.htm');">定稿时效统计</li>
<#if ZmrPathRule.check(request, "/selfDraftModifyOrderStat.htm")><li onclick="Z.Location.href('selfDraftModifyOrderStat.htm');">改稿订单统计</li></#if>
<#if ZmrPathRule.check(request, "/designOrderCountStat.htm")><li onclick="Z.Location.href('designOrderCountStat.htm');">设计总订单数量统计</li></#if>
<#if ZmrPathRule.check(request, "/draftOrderTypeTimeliness.htm")><li onclick="Z.Location.href('draftOrderTypeTimeliness.htm');">初稿产品时效统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrderTypeTimeliness.htm")><li onclick="Z.Location.href('completeOrderTypeTimeliness.htm');">定稿产品时效统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/draftOrderOrgTimeliness.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>初稿日期:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r20 " value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
${zhiqim_manager_tr_title( 2 , "初稿时效统计详情(组织)")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="100">组织</td>
<#for type : showTypeList>
<td width="100">${type.getTypeName()}</td>
</#for>
<td width="100">其他</td>
<td width="100">总数量</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40" <#if item_index % 2 == 0>bgcolor="#f3fdfc"</#if>>
<td>
<a onclick="doSearch('${item.getOrgId()}','${item.getOrgName()}');">${item.getOrgName()}</a>
</td>
<#for type : showTypeList>
<td>
<#var num = item.getNumberMap().get(type.getTypeName())/>
<#var time =item.getTimeMap().get(type.getTypeName())/>
<#if num gt 0 && time gt 0>
<span id="time_${item.getOrgId()}_${type.getTypeId()}" data-minute="${time}" data-num="${num}"></span><br>${num}单)
</#if>
</td>
</#for>
<td>
<#if item.getNumberMap().get("其他") gt 0 && item.getTimeMap().get("其他") gt 0>
<span id="time_${item.getOrgId()}_other" data-minute="${item.getTimeMap().get("其他")}" data-num="${item.getNumberMap().get("其他")}"></span><br>${item.getNumberMap().get("其他")}单)
</#if>
</td>
<td>${item.getAllCount()}</td>
</tr>
</#for>
<#if pageResult.size() == 0>
<tr class="z-h40">
<td colspan="${showTypeList.size()+3}" class="z-text-center">暂无初稿时效统计详情</td>
</tr>
</#if>
${zhiqim_manager_paging(pageResult, "draftOrderOrgTimeliness.htm")}
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,141 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
Z.onload(function(){
computeEfficiency();
});
function computeEfficiency()
{//计算效率
Z.each(Z("span[id^=time_]"), function(span, i)
{
var minute = span.attributes["data-minute"].value*1;
var num = span.attributes["data-num"].value*1;
minute = parseInt(minute/num);
var hour;
var minute;
if (minute/60 >0)
{
hour = parseInt(minute/60);
minute = minute%60;
}
var timeHtml = "";
if (hour >0)
timeHtml += hour+"小时";
if (minute >0)
timeHtml += minute+"分钟";
Z(span).html(timeHtml);
});
}
function doSearch(designer,prdTypeId)
{
if (Z.V.isEmpty(designer))
{
Z.alert("设计师不能为空");
return;
}
if (Z.V.isEmpty(prdTypeId))
{
Z.alert("类型不能为空");
return;
}
var beginDate = '${beginDate}';
var endDate = '${endDate}';
var dialog = new Z.Dialog();
dialog.title = "["+designer+"]初稿订单时效详情";
dialog.url = "/draftOrderTimelinessInfo.htm?beginDate="+beginDate+"&endDate="+endDate+"&designer="+designer+"&prdTypeId="+prdTypeId;
dialog.width = 1650;
dialog.height = 695;
dialog.execute();
}
</script>
${zhiqim_manager_breadcrumb("初稿时效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!--<li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li> -->
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('designOrderTypeStat.htm');">订单类型统计</li>
<li class="z-active">初稿时效统计</li>
<li onclick="Z.Location.href('draftOrderOrgTimeliness.htm');">初稿时效统计(组织)</li>
<li onclick="Z.Location.href('completeOrderTimeliness.htm');">定稿时效统计</li>
<#if ZmrPathRule.check(request, "/selfDraftModifyOrderStat.htm")><li onclick="Z.Location.href('selfDraftModifyOrderStat.htm');">改稿订单统计</li></#if>
<#if ZmrPathRule.check(request, "/designOrderCountStat.htm")><li onclick="Z.Location.href('designOrderCountStat.htm');">设计总订单数量统计</li></#if>
<#if ZmrPathRule.check(request, "/draftOrderTypeTimeliness.htm")><li onclick="Z.Location.href('draftOrderTypeTimeliness.htm');">初稿产品时效统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrderTypeTimeliness.htm")><li onclick="Z.Location.href('completeOrderTypeTimeliness.htm');">定稿产品时效统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/draftOrderTimeliness.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>初稿日期:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r20 " value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
${zhiqim_manager_tr_title( 1 , "初稿时效统计详情")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="100">设计师</td>
<#for type : showTypeList>
<td width="100">${type.getTypeName()}</td>
</#for>
<td width="100">其他</td>
<td width="100">总数量</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40" <#if item_index % 2 == 0>bgcolor="#f3fdfc"</#if>>
<td>${item.getDesigner()}</td>
<#for type : showTypeList>
<td>
<#var num = item.getNumberMap().get(type.getTypeName())/>
<#var time =item.getTimeMap().get(type.getTypeName())/>
<#if num gt 0 && time gt 0>
<a onclick="doSearch('${item.getDesigner()}','${type.getTypeId()}');">
<span id="time_${item.getDesigner()}_${type.getTypeId()}" data-minute="${time}" data-num="${num}"></span><br>${num}单)
</a>
</#if>
</td>
</#for>
<td>
<#if item.getNumberMap().get("其他") gt 0 && item.getTimeMap().get("其他") gt 0>
<span id="time_${item.getDesigner()}_other" data-minute="${item.getTimeMap().get("其他")}" data-num="${item.getNumberMap().get("其他")}"></span><br>${item.getNumberMap().get("其他")}单)
</#if>
</td>
<td>${item.getAllCount()}</td>
</tr>
</#for>
<#if pageResult.size() == 0>
<tr class="z-h40">
<td colspan="${showTypeList.size()+3}" class="z-text-center">暂无初稿时效统计详情</td>
</tr>
</#if>
${zhiqim_manager_paging(pageResult, "draftOrderTimeliness.htm")}
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,106 @@
<script>
Z.onload(function(){
computeEfficiency();
});
function computeEfficiency()
{//计算效率
Z.each(Z("span[id^=time_]"), function(span, i)
{
var minute = span.attributes["data-minute"].value*1;
var num = span.attributes["data-num"].value*1;
minute = parseInt(minute/num);
var hour;
var minute;
if (minute/60 >0)
{
hour = parseInt(minute/60);
minute = minute%60;
}
var timeHtml = "";
if (hour >0)
timeHtml += hour+"小时";
if (minute >0)
timeHtml += minute+"分钟";
Z(span).html(timeHtml);
});
}
</script>
${zhiqim_manager_breadcrumb("初稿产品时效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('draftStatusOrderStat.htm');">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<!-- <li onclick="Z.Location.href('completeOrderConvert.htm');">定稿统计</li> -->
<li onclick="Z.Location.href('completeOrderDetail.htm');">定稿统计</li>
<#if ZmrPathRule.check(request, "/designFinalizeOrgCase.htm")><li onclick="Z.Location.href('designFinalizeOrgCase.htm');">组织定稿统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
<#if ZmrPathRule.check(request, "/completeOrgRateStat.htm")><li onclick="Z.Location.href('completeOrgRateStat.htm');">组织定稿率统计</li></#if>
<li onclick="Z.Location.href('designOrderTypeStat.htm');">订单类型统计</li>
<li onclick="Z.Location.href('draftOrderTimeliness.htm');">初稿时效统计</li>
<li onclick="Z.Location.href('draftOrderOrgTimeliness.htm');">初稿时效统计(组织)</li>
<li onclick="Z.Location.href('completeOrderTimeliness.htm');">定稿时效统计</li>
<#if ZmrPathRule.check(request, "/designOrderCountStat.htm")><li onclick="Z.Location.href('designOrderCountStat.htm');">设计总订单数量统计</li></#if>
<li class="z-active">初稿产品时效统计</li>
<#if ZmrPathRule.check(request, "/completeOrderTypeTimeliness.htm")><li onclick="Z.Location.href('completeOrderTypeTimeliness.htm');">定稿产品时效统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/draftOrderTypeTimeliness.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>初稿日期:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r20 " value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
${zhiqim_manager_tr_title(4 , "初稿产品时效统计详情")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="150">产品类型</td>
<td width="150">数量</td>
<td width="150">总时长</td>
<td width="150">平均耗时</td>
</tr>
<#var allcount = 0/>
<#var allTime = 0/>
<#var typeMap = DesignTypeDao.mapAll()/>
<#for item : timelinessList>
<tr class="z-text-center z-h40" <#if item_index % 2 == 0>bgcolor="#f3fdfc"</#if>>
<td><#if Validates.isNotEmpty(typeMap) && typeMap.containsKey(item.getTypeId())>${typeMap.get(item.getTypeId()).getTypeName(item.getTypeId())}</#if></td>
<td>${item.getCount()}</td>
<td><span id="time_${item.getTypeId()}" data-minute="${item.getTime()}" data-num="1"></span></td>
<td><span id="time_${item.getTypeId()}" data-minute="${item.getTime()}" data-num="${item.getCount()}"></span></td>
</tr>
<#var allcount = allcount + item.getCount()/>
<#var allTime = allTime + item.getTime()/>
</#for>
<#if timelinessList.size() == 0>
${zhiqim_manager_no_record(4, "暂无初稿产品时效统计详情")}
<#else>
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td>总计</td>
<td>${allcount}</td>
<td><span id="time_all" data-minute="${allTime}" data-num="1"></span></td>
<td><span id="time_all" data-minute="${allTime}" data-num="${allcount}"></span></td>
</tr>
</#if>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,38 @@
${zhiqim_manager_breadcrumb("未完成订单统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">未完成订单统计</li>
<li onclick="Z.Location.href('draftOrderConvert.htm');">初稿统计</li>
<#if ZmrPathRule.check(request, "/designerPerformance.htm")><li onclick="Z.Location.href('designerPerformance.htm');">设计师绩效统计</li></#if>
<#if ZmrPathRule.check(request, "/completeDesignRateStat.htm")><li onclick="Z.Location.href('completeDesignRateStat.htm');">设计师定稿率统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-h40-tr z-pd6 z-bg-white z-text-center">
${zhiqim_manager_tr_title(6, "未完成订单统计列表")}
<tr bgcolor="${zmr_thead_bgcolor}">
<td width="150">设计师</td>
<td width="150">未完成总数量</td>
<td width="150">48小时内</td>
<td width="150">3-7天内</td>
<td width="150">8-30天内</td>
<td width="150">30天以上</td>
</tr>
${zhiqim_manager_tr_no_record(list, 6, "暂无数据")}
<#for item : list>
<tr>
<td>${item.getDesigner()}</td>
<td>${item.getSumCount()}</td>
<td>${item.getDayCount()}</td>
<td>${item.getWeekCount()}</td>
<td>${item.getMonthCount()}</td>
<td>${item.getOtherCount()}</td>
</tr>
</#for>
</table>
${zhiqim_manager_list(list.size())}
${zhiqim_manager_content_end()}
@@ -0,0 +1,35 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>未定稿订单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="130">旺旺号</td>
<td width="130">设计师</td>
<td width="*">产品</td>
<td width="120">订单状态</td>
<td width="160">进度备注</td>
<td width="160">领单时间</td>
<td width="160">初稿时间</td>
</tr>
<#if pageResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="9">暂不存在未定稿订单信息</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>${StatusConstants.getStatus(item.getStatus())}</td>
<td>${progressNoteMap.get(item.getDesignId())}</td>
<td>${Sqls.toDateTimeString(item.getDesignBeginTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryDesignNotCompleteOrderInfo")}
@@ -0,0 +1,74 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>定稿订单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="110">旺旺号</td>
<td width="115">设计师</td>
<td width="*">产品</td>
<td width="80">设计费份数</td>
<td width="90">领单时间</td>
<td width="90">初稿时间</td>
<td width="90">定稿时间</td>
<td width="60">折算单数</td>
</tr>
<#if passResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="9">暂不存在定稿订单信息</td>
</tr>
</#if>
<#for item : passResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>${item.getDesignCopies()}</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
<td>${orderConvertMap.get(item.getDesignId())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(passResult, "doQueryCompleteOrderDetailInfo")}
<table class="z-table z-bordered z-bg-white z-text-center z-mg-t20">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>定稿退回订单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="125">订单号</td>
<td width="115">旺旺号</td>
<td width="110">设计师</td>
<td width="*">产品</td>
<td width="80">设计费份数</td>
<td width="90">定稿时间</td>
<td width="90">退回时间</td>
<td width="65">退回次数</td>
<td width="110">退回原因分类</td>
<td width="70">折算单数</td>
</tr>
<#if backResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="10">暂不存在定稿退回订单信息</td>
</tr>
</#if>
<#for item : backResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>${item.getDesignCopies()}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
<td>${Sqls.toDateTimeString(item.getCheckTime())}</td>
<td>${item.getBackOrderCount()}</td>
<td>${item.getCheckBackReason()}</td>
<td>${orderConvertMap.get(item.getDesignId())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(backResult, "doQueryCompleteOrderDetailInfo")}
@@ -0,0 +1,30 @@
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40 z-text-center z-bg-gray">
<td width="150">订单号</td>
<td width="150">店铺</td>
<td width="150">旺旺</td>
<td width="100">状态</td>
<td width="*">产品</td>
<td width="100">定稿耗时</td>
<td width="160">录单时间</td>
<td width="160">定稿时间</td>
</tr>
<#if pageResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="7">暂不存在清单信息</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${StatusConstants.getStatus(item.getStatus())}</td>
<td>${item.getOrderText()}</td>
<td>${DateTimes.compareMinute(item.getDesignEndTime(), item.getDesignDraftTime())} 分钟</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
</tr>
</#for>
${zhiqim_manager_paging(pageResult, "completeOrderTimelinessInfo.htm")}
</table>
@@ -0,0 +1,53 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<#if console>
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10" style="padding-left: 10px;">
定稿日期:
<input name="designerPerformanceBeginDate" id="designerPerformanceBeginDate" onfocus="parent.Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${designerPerformanceBeginDate}"> -
<input name="designerPerformanceEndDate" id="designerPerformanceEndDate" onfocus="parent.Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${designerPerformanceEndDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}" onclick="doQueryCompleteOrderInfo(1);">查询</button>
</td>
</tr>
<#else>
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>订单详情&emsp;
<button class="z-mg-l10 z-button" onclick="exportDatas();"><i class="z-font z-download"></i>导出</button>
</td>
</tr>
</#if>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="110">旺旺号</td>
<td width="100">设计师</td>
<td width="110">店铺</td>
<td width="90">设计类型</td>
<td width="*">产品</td>
<td width="80">设计费份数</td>
<td width="90">领单时间</td>
<td width="90">定稿时间</td>
<td width="110">订单绩效</td>
</tr>
<#if result.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">2023-0
<td colspan="12">暂不存在定稿订单信息</td>
</tr>
</#if>
<#for item : result.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getShopNick()}</td>
<td>${DraftConstants.get(item.getDraftType())}</td>
<td>${item.getOrderText()}</td>
<td>${item.getDesignCopies()}</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
<td>${CalculationUtil.getDesignerOrderPerformance(item,designer)}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(result, "doQueryCompleteOrderInfo")}
@@ -0,0 +1,33 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="9">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>初稿订单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="120">订单号</td>
<td width="140">旺旺号</td>
<td width="110">设计师</td>
<td width="*">产品</td>
<td width="90">设计份数</td>
<td width="150">领单时间</td>
<td width="150">初稿时间</td>
</tr>
<#if result.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="10">暂不存在初稿订单信息</td>
</tr>
</#if>
<#for item : result.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>${item.getDesignCopies()}</td>
<td>${Sqls.toDateTimeString(item.getDesignBeginTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(result, "doQueryDraftOrderStatInfo")}
@@ -0,0 +1,73 @@
<script>
Z.onload(function(){
computeEfficiency();
});
function computeEfficiency()
{//计算效率
Z.each(Z("span[id^=time_]"), function(span, i)
{
var minute = span.attributes["data-minute"].value*1;
var num = span.attributes["data-num"].value*1;
minute = parseInt(minute/num);
var hour;
var minute;
if (minute/60 >0)
{
hour = parseInt(minute/60);
minute = minute%60;
}
var timeHtml = "";
if (hour >0)
timeHtml += hour+"小时";
if (minute >0)
timeHtml += minute+"分钟";
Z(span).html(timeHtml);
});
}
</script>
<#-- 分页列表-->
<table class="z-table z-bordered z-bg-white z-pd6">
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="100">设计师</td>
<#for type : showTypeList>
<td width="100">${type.getTypeName()}</td>
</#for>
<td width="100">其他</td>
<td width="100">总数量</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40" <#if item_index % 2 == 0>bgcolor="#f3fdfc"</#if>>
<td>${item.getDesigner()}</td>
<#for type : showTypeList>
<td>
<#var num = item.getNumberMap().get(type.getTypeName())/>
<#var time =item.getTimeMap().get(type.getTypeName())/>
<#if num gt 0 && time gt 0>
<span id="time_${item.getDesigner()}_${type.getTypeId()}" data-minute="${time}" data-num="${num}"></span><br>${num}单)
</#if>
</td>
</#for>
<td>
<#if item.getNumberMap().get("其他") gt 0 && item.getTimeMap().get("其他") gt 0>
<span id="time_${item.getDesigner()}_other" data-minute="${item.getTimeMap().get("其他")}" data-num="${item.getNumberMap().get("其他")}"></span><br>${item.getNumberMap().get("其他")}单)
</#if>
</td>
<td>${item.getAllCount()}</td>
</tr>
</#for>
<#if pageResult.size() == 0>
<tr class="z-h40">
<td colspan="${showTypeList.size()+3}" class="z-text-center">暂无初稿时效统计详情</td>
</tr>
</#if>
${zhiqim_manager_paging(pageResult, "draftOrderOrgTimelinessInfo.htm")}
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,32 @@
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40 z-text-center z-bg-gray">
<td width="150">订单号</td>
<td width="150">店铺</td>
<td width="150">旺旺</td>
<td width="100">状态</td>
<td width="*">产品</td>
<td width="160">录单时间</td>
<td width="100">初稿耗时</td>
<td width="160">领单时间</td>
<td width="160">初稿时间</td>
</tr>
<#if pageResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="7">暂不存在清单信息</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${StatusConstants.getStatus(item.getStatus())}</td>
<td>${item.getOrderText()}</td>
<td>${Sqls.toDateTimeString(item.getCreateTime())}</td>
<td>${DateTimes.compareMinute(item.getDesignDraftTime(), item.getDesignReceiveTime())} 分钟</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
</tr>
</#for>
${zhiqim_manager_paging(pageResult, "draftOrderTimelinessInfo.htm")}
</table>
@@ -0,0 +1,45 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center" style="background-color: #efefef;">
<tr class="z-h40 z-text-center z-bg-gray">
<td width="120">订单号</td>
<td width="130">旺旺号</td>
<td width="*">产品</td>
<td width="120">组织</td>
<td width="120">设计师</td>
<td width="100">订单状态</td>
<td width="140">进度备注</td>
<td width="140">领单时间</td>
<td width="140">初稿时间</td>
<td width="140">定稿时间</td>
<td width="100">超时时效</td>
</tr>
<#if result.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="12">暂不存在定稿超时订单信息</td>
</tr>
</#if>
<#var typeMap = DesignTypeDao.mapAll()/>
<#for item : pageResult.list()>
<#var effectiveTime = Validates.isEmpty(typeMap) ? 0 : ( typeMap.containsKey(item.getTypeId()) ? typeMap.get(item.getTypeId()).getEffectiveEndTime() : 0)/>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getOrderText()}</td>
<td>${ZmrOrgDao.getOrgName(request, item.getOrgId())}</td>
<td>${item.getDesigner()}</td>
<td>${StatusConstants.getStatus(item.getStatus())}</td>
<td>${progressNoteMap.get(item.getDesignId())}</td>
<td>${Sqls.toDateTimeString(item.getDesignBeginTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignEndTime())}</td>
<td>
<#if item.getStatus() gte "55" >
<span class="z-pointer z-text-ellipsis" data-role="z-tooltip" data-options="placement:top;top:5;align:center;width:140px;" data-text="定稿时间-领单时间"><span class="z-text-red">${CalculationUtil.dateTimeTran(DateTimes.compareMinute(item.getDesignEndTime(), item.getDesignBeginTime()) - effectiveTime)}</span></span>
<#else>
<span class="z-pointer z-text-ellipsis" data-role="z-tooltip" data-options="placement:top;top:5;align:center;width:140px;" data-text="当前时间-领单时间"><span class="z-text-red">${CalculationUtil.dateTimeTran(DateTimes.compareMinute(Sqls.nowTimestamp(), item.getDesignBeginTime()) - effectiveTime)}</span></span>
</#if>
</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryCompleteTimeoutOrderInfo")}
@@ -0,0 +1,42 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="11">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>初稿超时订单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="120">订单号</td>
<td width="130">旺旺号</td>
<td width="*">产品</td>
<td width="100">组织</td>
<td width="100">设计师</td>
<td width="110">进度备注</td>
<td width="110">状态</td>
<td width="150">领单时间</td>
<td width="150">初稿时间</td>
<td width="130">超时时长</td>
</tr>
<#if pageResult.list().size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="13">暂不存在初稿超时订单</td>
</tr>
</#if>
<#var typeMap = DesignTypeDao.mapAll()/>
<#for item : pageResult.list()>
<#var beforeTime = Validates.isNotEmpty(item.getDesignDraftTime()) ? item.getDesignDraftTime() : Sqls.nowTimestamp()/>
<#var effectiveTime = Validates.isEmpty(typeMap) ? 0 : (typeMap.containsKey(item.getTypeId()) ? typeMap.get(item.getTypeId()).getEffectiveTime() : 0)/>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getOrderText()}</td>
<td>${ZmrOrgDao.getOrgName(request, item.getOrgId())}</td>
<td>${item.getDesigner()}</td>
<td>${progressNoteMap.get(item.getDesignId())}</td>
<td>${StatusConstants.getStatus(item.getStatus())}</td>
<td>${Sqls.toDateTimeString(item.getDesignBeginTime())}</td>
<td>${Sqls.toDateTimeString(item.getDesignDraftTime())}</td>
<td><span class="z-text-red">${CalculationUtil.dateTimeTran(DateTimes.compareMinute(beforeTime, item.getDesignBeginTime()) - effectiveTime)}</span></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryTimeoutDraftOrder")}
@@ -0,0 +1,38 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="9">&nbsp;分拣超时订单详情</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="130">订单号</td>
<td width="140">旺旺号</td>
<td width="120">状态</td>
<td width="*">产品</td>
<td width="110">行业</td>
<td width="150">录单时间</td>
<td width="150">分拣时间</td>
<td width="130">超时时长</td>
</tr>
<#if pageResult.list().size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="10">暂不存在分拣超时订单</td>
</tr>
</#if>
<#var typeMap = DesignTypeDao.mapAll()/>
<#for item : pageResult.list()>
<#var beforeTime = Validates.isNotEmpty(item.getOrgReceiveTime()) ? item.getOrgReceiveTime() : Sqls.nowTimestamp()/>
<#var effectiveTime = Validates.isEmpty(typeMap) ? 0 : (typeMap.containsKey(item.getTypeId()) ? typeMap.get(item.getTypeId()).getMerDispatchEffectiveTime() : 0)/>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getBuyerNick()}</td>
<td>${StatusConstants.getStatus(item.getStatus())}</td>
<td>${item.getOrderText()}</td>
<td>${Global.get(DesignIndustryCache.class).getIndustryName(item.getIndustryId())}</td>
<td>${Sqls.toDateTimeString(item.getCreateTime())}</td>
<td>${Sqls.toDateTimeString(item.getOrgReceiveTime())}</td>
<td><span class="z-text-red">${CalculationUtil.dateTimeTran(DateTimes.compareMinute(beforeTime, item.getCreateTime()) - effectiveTime)}</span></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryTimeoutMerDispatchOrder")}
@@ -0,0 +1,129 @@
${Styles.htmlOverflowHidden()}
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/data.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var chart = new Highcharts.Chart('container',
{
chart: {
type: 'spline'
},
title: {
text: '订单分析'
},
xAxis: {
categories: [
<#for date : dateList>
<#if date_index==(dateList.size()-1)>
'${date}:00'
<#else>
'${date}:00',
</#if>
</#for>
]
},
yAxis: {
title: {
text: '单量'
},
labels: {
formatter: function () {
return this.value + '';
}
}
},
tooltip: {
crosshairs: true,
shared: true
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle'
},
plotOptions: {
spline: {
marker: {
radius: 4,
lineColor: '#eaeaea',
lineWidth: 1
}
}
},
series:
[
{
name: '订单数量',
marker: {
symbol: 'diamond'
},
data: [
<#for date : dateList>
<#if date_index==(dateList.size()-1)>
${orderCountMap.get(date)}
<#else>
${orderCountMap.get(date)},
</#if>
</#for>
]
},
{
name: '初稿数量',
marker: {
symbol: 'diamond'
},
data: [
<#for date : dateList>
<#if date_index==(dateList.size()-1)>
${draftCountMap.get(date)}
<#else>
${draftCountMap.get(date)},
</#if>
</#for>
]
},
{
name: '定稿数量',
marker: {
symbol: 'diamond'
},
data: [
<#for date : dateList>
<#if date_index==(dateList.size()-1)>
${endCountMap.get(date)}
<#else>
${endCountMap.get(date)},
</#if>
</#for>
]
},
]
});
});
</script>
${zhiqim_manager_breadcrumb("订单分析")}
${zhiqim_manager_content()}
<#-- 左侧功能 -->
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form action="orderAnalysis.htm" method="post">
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr class="z-h40">
<td width="50%">
<select name="timeType" class="z-select z-mg-r20" data-role="z-select" data-class="${zmr_color_class}">
<option value="3" <#if timeType == 3>selected</#if>>近三天</option>
<option value="7" <#if timeType == 7>selected</#if>>近一周</option>
<option value="30" <#if timeType == 30>selected</#if>>近一月</option>
</select>
<button class="z-button z-large z-w120 z-mg-r15 ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<div id="container" class="z-bg-white" style="margin-top:20px; min-width:400px;min-height:550px"></div>
${zhiqim_manager_content_end()}
@@ -0,0 +1,126 @@
<style>
.z-text-ellipsis {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
display: inline;
}
.z-floater .z-content {
position: absolute;
top: 0;
left: 0;
min-width: 30px;
min-height: 25px;
padding: 6px;
font-size: 12px;
border: 2px solid #c6c6c6;
line-height: 25px;
text-align: center;
background: #fff;
}
</style>
<script>
Z.onload(function(){
doSwicthCompleteTimeoutOrderInfo(${designer});
});
var designer;
function doSwicthCompleteTimeoutOrderInfo(des){
designer = des;
doQueryCompleteTimeoutOrderInfo(1);
}
function doQueryCompleteTimeoutOrderInfo(page){
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryCompleteTimeoutOrderInfo");
ajax.addParam("page",page);
ajax.addParam("startDate", Z("#startDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
function doProgressNote(id)
{//进度备注
var designId =id
if (Z.V.isEmpty(designId))
{
designId = Z.FM.getChecked("designId");
if (Z.V.isEmpty(designId))
{
Z.alert("请选择一条订单");
return;
}
}
var dialog = new Z.Dialog();
dialog.title = "订单["+designId+"]进度备注";
dialog.url = "/progressNote.htm?designId="+designId;
dialog.width = 1000;
dialog.height = 630;
dialog.execute();
}
</script>
${zhiqim_manager_breadcrumb("设计师定稿超时")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/timeoutMerDispatch.htm")><li onclick="Z.L.href('timeoutMerDispatch.htm');">分拣超时</li></#if>
<#if ZmrPathRule.check(request, "/timeoutDispatchOrder.htm")><li onclick="Z.L.href('timeoutDispatchOrder.htm');">派单超时</li></#if>
<#if ZmrPathRule.check(request, "/timeoutDraftOrder.htm")><li onclick="Z.L.href('timeoutDraftOrder.htm');">初稿超时</li></#if>
<li class="z-active">定稿超时</li>
<#if ZmrPathRule.check(request, "/timeoutOrgComplete.htm")><li onclick="Z.Location.href('timeoutOrgComplete.htm');">组织定稿超时统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2" class="z-bg-white z-h40">
<form name="theForm" action="timeoutDesignerComplete.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>下单日期:
<input name="startDate" id="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="${startDate}"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120"value="${endDate}">
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr>
<td width="200" valign="top">
<table class="z-table z-bordered z-bg-white z-pd6 z-text-center">
<tr class="z-h40">
<td colspan="2" class="z-text-left z-bold z-px14" style="text-indent:5px;background-color: #efefef;">超时订单列表</td>
</tr>
<tr class="z-h40">
<td>设计师</td>
<td>超时订单</td>
</tr>
<#for item : timeoutMap.keySet()>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(item_index)}" onclick="doSwicthCompleteTimeoutOrderInfo('${item}')">
<td>${item}</td>
<td>${timeoutMap.get(item)}</td>
</tr>
</#for>
<tr class="z-h40">
<td>总计</td>
<td>${timeoutOrderNumSum}</td>
</tr>
</table>
</td>
<td width="*" id="result" valign="top"></td>
</tr>
</table>
@@ -0,0 +1,123 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '<#if ZmrOrgDao.getOrgRootId(request) == sessionUser.getSelectedOrgId()>组织超时占比(超时总单量${orgTimeoutSumNum}<#else>组织超时/未超时占比(总接单量${orgOrderNum}</#if>'},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
<#if ZmrOrgDao.getOrgRootId(request) != sessionUser.getSelectedOrgId()>
  colors:['#4dd3b9','#fdd67f','#ffaca8','#64bcec'],
</#if>
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '百分比',
colorByPoint: true,
data:[
<#for key : statMap.keySet()>
{name: '${key}',y: ${statMap.get(key)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("组织定稿超时统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/timeoutMerDispatch.htm")><li onclick="Z.L.href('timeoutMerDispatch.htm');">分拣超时</li></#if>
<#if ZmrPathRule.check(request, "/timeoutDispatchOrder.htm")><li onclick="Z.L.href('timeoutDispatchOrder.htm');">派单超时</li></#if>
<#if ZmrPathRule.check(request, "/timeoutDraftOrder.htm")><li onclick="Z.L.href('timeoutDraftOrder.htm');">初稿超时</li></#if>
<#if ZmrPathRule.check(request, "/timeoutDesignerComplete.htm")><li onclick="Z.Location.href('timeoutDesignerComplete.htm');">设计师定稿超时</li></#if>
<li class="z-active">组织定稿超时统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/timeoutOrgComplete.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td width="350">录单时间:
<input name="startDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${startDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r30 " value="${endDate}">
</td>
<td width="270">产品类型:<select name="typeId" class="z-select z-w180" data-role="z-select" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : DesignTypeDao.listAll()>
<option value="${item.getTypeId()}" <#if typeId == item.getTypeId()>selected</#if>>${item.getTypeName()}</option>
</#for>
</select>
</td>
<td width="*"><button class="z-large z-w120 z-button ${zmr_color_class}">查询</button></td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered z-pd10 z-bg-white z-text-left" style="text-align:center">
<#if ZmrOrgDao.getOrgRootId(request) == sessionUser.getSelectedOrgId()>
<tr class="z-bold">
<td width="19%">组织名称</td>
<td width="18%">组织总接单</td>
<td width="30%">组织总超时(设计超时数)</td>
<td width="33%">超时率(该组织超时/该组织总接单数)</td>
</tr>
<#for item : statList>
<tr>
<td>${String.valueOf(item.get("orgName"))}</td>
<td>${String.valueOf(item.get("orgOrderNum"))}</td>
<td>${String.valueOf(item.get("orgTimeoutNum"))}</td>
<td>${CalculationUtil.calculatePercent(Integer.valueOf(String.valueOf(item.get("orgTimeoutNum"))),Integer.valueOf(String.valueOf(item.get("orgOrderNum"))))}</td>
</tr>
</#for>
<#else>
<tr class="z-bold">
<td width="20%">组织名称</td>
<td width="18%">总订单数</td>
<td width="16%">未超时</td>
<td width="16%">已超时</td>
<td width="30%">超时比例(组织超时/总单量)</td>
</tr>
<#for item : statList>
<tr>
<td>${String.valueOf(item.get("orgName"))}</td>
<td>${String.valueOf(item.get("orgOrderNum"))}</td>
<td>${Integer.valueOf(String.valueOf(item.get("orgOrderNum"))) - Integer.valueOf(String.valueOf(item.get("orgTimeoutNum")))}</td>
<td>${String.valueOf(item.get("orgTimeoutNum"))}</td>
<td>${String.valueOf(item.get("orgTimeoutProportion"))}%</td>
</tr>
</#for>
</#if>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,215 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
Z.onload(function()
{
if (groupPerformanceMap.size() > 0)
{
showGroupMembersPromance(groupPerformanceMap._keys[0]);
}
/*
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
if (trs.length == 1)
return;
var start=1;//忽略第一行,从第二行开始
var end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseInt(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),1);
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),3);
calcTotal(document.getElementById('statTable'),4);
*/
});
var groupPerformanceMap = new Z.HashMap();
<#for groupModule : groupPerformanceMap.values()>
groupPerformanceMap.put("${groupModule.getGroup().getGroupId()}", Z.J.toObject('${groupModule}'));
</#for>
function showGroupMembersPromance(groupId)
{
var resultHtml = '';
var groupName = '';
resultHtml += '<table class="z-table z-bordered z-bg-white z-pd6 z-w50p">';
resultHtml += '<tr class="z-text-left z-h40">';
resultHtml += ' <td class="z-bold" colspan="12">[<span id="groupNameSpan" class="z-text-green">'+groupName+'</span>]设计师效绩详情</td>';
resultHtml += '</tr>';
resultHtml += '<tr class="z-text-center z-h40" bgcolor="'+'${zmr_thead_bgcolor}'+'">';
resultHtml += ' <td width="12%">设计师</td>';
resultHtml += ' <td width="12%">设计单数</td>';
resultHtml += ' <td width="12%">设计绩效</td>';
resultHtml += ' <td width="12%">特殊订单单数</td>';
resultHtml += ' <td width="12%">特殊订单绩效</td>';
resultHtml += ' <td width="12%">退款率</td>';
resultHtml += ' <td width="12%">退款绩效</td>';
resultHtml += ' <td width="*">绩效总额</td>';
resultHtml += '</tr>';
var trHtml='';
var aaa = 0;
try
{
var groupModule = groupPerformanceMap.get(''+groupId);
var group = groupModule.group;
groupName = group.groupName;
var groupLeader = groupModule.groupLeader;
if (groupLeader)
{
trHtml += '<tr class="z-text-center z-h40 z-bold">';
trHtml += ' <td>'+groupLeader.designer+'</td>';
trHtml += ' <td>'+groupLeader.designCompleteSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(groupLeader.designAmount)+'</td>';
trHtml += ' <td>'+groupLeader.orderTypeSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(groupLeader.orderTypeAmount)+'</td>';
trHtml += ' <td>'+groupLeader.refundSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(groupLeader.refundAmount)+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(parseInt(groupLeader.designAmount) + parseInt(groupLeader.orderTypeAmount) + parseInt(groupLeader.refundAmount))+'</td>';
trHtml += '</tr>';
aaa += parseInt(groupLeader.designAmount) + parseInt(groupLeader.orderTypeAmount) + parseInt(groupLeader.refundAmount);
}
var groupMembers = groupModule.members;
for(var i = 0; i < groupMembers.length; i++)
{
var member = groupMembers[i];
trHtml += '<tr class="z-text-center z-h40 ">';
trHtml += ' <td>'+member.designer+'</td>';
trHtml += ' <td>'+member.designCompleteSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(member.designAmount)+'</td>';
trHtml += ' <td>'+member.orderTypeSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(member.orderTypeAmount)+'</td>';
trHtml += ' <td>'+member.refundSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(member.refundAmount)+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(parseInt(member.designAmount) + parseInt(member.orderTypeAmount) + parseInt(member.refundAmount))+'</td>';
trHtml += '</tr>';
aaa += parseInt(member.designAmount) + parseInt(member.orderTypeAmount) + parseInt(member.refundAmount);
}
console.log(aaa)
if (!groupLeader && groupMembers.length == 0)
{
trHtml += '<tr class="z-text-center z-h40">';
trHtml += ' <td colspan="12">暂时没有数据信息</td>';
trHtml += '</tr>';
}
else
{
trHtml += '<tr class="z-text-right z-h40">';
trHtml += ' <td colspan="12">共&nbsp;<span class="z-text-red">'+(groupMembers.length+(groupLeader?1:0))+'</span>&nbsp;条数据</td>';
trHtml += '</tr>';
}
resultHtml +=trHtml;
}
catch(e)
{
resultHtml += '<tr class="z-text-center z-h40">';
resultHtml += ' <td colspan="12">暂时没有数据信息</td>';
resultHtml += '</tr>';
Z.failure("加载数据异常");
console.error(e);
}
resultHtml += '</table>';
Z("#result").html(resultHtml);
Z("#groupNameSpan").html(groupName);
}
</script>
${zhiqim_manager_breadcrumb("定稿统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.L.href('personalPerformanceStat.htm');">个人绩效统计</li>
<li onclick="Z.L.href('designerPerformanceStat.htm');">设计师绩效统计</li>
<li class="z-active">设计组绩效统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="designGroupPerformanceStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>
设计组选择:
<select name="groupId" class="z-select z-w120 z-mg-r10" data-role="z-select" data-class="${zmr_color_class}">
<option>全部</option>
<#for item : groupList>
<option value="item.getGroupId()" <#if item.getGroupId()==groupId>selected</#if>>${item.getGroupName()}</option>
</#for>
</select>
查询日期:
<select name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : 2017..DateTimes.getCurrentYear()>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<option value="1" <#if month==1>selected</#if>>1</option>
<#for item : 1..12>
<option value="${item}" <#if item == month>selected</#if>>${item}</option>
</#for>
</select>
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="500" valign="top">
<table id="statTable" class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td>设计组</td>
<td>总定稿单数</td>
<td>平均定稿单数</td>
<td>人数</td>
<td>总设计绩效</td>
</tr>
<#for groupModule : groupPerformanceMap.values()>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(groupModule_index)}" onclick="showGroupMembersPromance('${groupModule.getGroup().getGroupId()}');">
<td>${groupModule.getGroup().getGroupName()}</td>
<td>${groupModule.getGroupCompleteSum()}</td>
<td>${groupModule.getGroupCompleteAvgCount()}</td>
<td>${groupModule.getMembers().size()+(groupModule.getGroupLeader() != null ? 1 : 0)}</td>
<td>${Amounts.toYuanMustRadix(groupModule.getGroupPerformanceAmount())}</td>
</tr>
</#for>
<#if groupPerformanceMap.size() == 0>
${zhiqim_manager_no_record(10, "暂时没有定稿统计信息")}
<#else>
<tr class="z-text-right z-h40">
<td colspan="10">共<span class=" z-mg-l5 z-mg-r5 z-text-red">${groupPerformanceMap.size()}</span>条数据</td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,96 @@
<#def designatedPath="/personalPerformanceStat.htm"/>
${zhiqim_manager_breadcrumb("设计师绩效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.L.href('personalPerformanceStat.htm');">个人绩效统计</li>
<li class="z-active">设计师绩效统计</li>
<#if ZmrPathRule.check(request, "/notTimeoutCompleteOrderHistory.htm")><li onclick="Z.L.href('notTimeoutCompleteOrderHistory.htm');">时效绩效</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designerPerformanceStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>
设计师:
<select name="operatorCode" class="z-select z-w140" data-role="z-select-search" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : designerList>
<option value="${item.getOperatorCode()}" <#if item.getOperatorCode() == operatorCode>selected</#if>>${item.getOperatorCode()}</option>
</#for>
</select>
查询日期:
<select name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : yearList>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<div class="z-w100p">
<table class="z-table z-bordered z-bg-white z-pd6 z-w50p">
${zhiqim_manager_tr_title(20,"设计师绩效统计")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="130" class="z-bold">设计师</td>
<td width="120">设计单数</td>
<td width="125">设计绩效</td>
<td width="130">特殊订单单数</td>
<td width="145">特殊订单绩效</td>
<td width="120">退款率</td>
<td width="125">退款绩效</td>
<td width="120">质检分</td>
<td width="125">质检绩效</td>
<td width="120">售后单数</td>
<td width="125">售后扣罚</td>
<td width="125">小组绩效</td>
<td width="*">绩效总额</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40">
<td>${item.getDesigner()}</td>
<td>${item.getDesignCompleteSum()}</td>
<td>${Amounts.toYuan(item.getDesignAmount())}</td>
<td>${item.getOrderTypeSum()}</td>
<td>${Amounts.toYuan(item.getOrderTypeAmount())}</td>
<td>${Amounts.toYuan(item.getRefundRate())}%</td>
<td>${Amounts.toYuan(item.getRefundAmount())}</td>
<td>${item.getQcScore()}</td>
<td>${Amounts.toYuan(item.getQcAmount())}</td>
<td>${item.getAfterCount()}</td>
<td>-${Amounts.toYuan(item.getAfterLossAmount())}</td>
<#var groupAmount=groupMap.get(item.getDesigner())/>
<#if groupAmount != null>
<td>${Amounts.toYuan(groupAmount)}</td>
<#else>
<td>0</td>
</#if>
<#var amount=amountMap.get(item.getDesigner())/>
<td>${Amounts.toYuan(amount)}</td>
</tr>
</#for>
<#if pageResult.size() == 0>
${zhiqim_manager_no_record(20, "暂时没有设计师绩效")}
</#if>
</div>
${zhiqim_manager_paging(pageResult, "designerPerformanceStat.htm")}
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,138 @@
<#def designatedPath="/personalPerformanceStat.htm"/>
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function load()
{
Highcharts.setOptions({
colors: ['#696969', '#D3D3D3', '#778899']
});
//饼图
var chart = Highcharts.chart('container',
{
title: {text: '绩效分析(总金额:${amountSum}'},
tooltip: {headerFormat: '{series.name}<br>',pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true, // 可以被选择
cursor: 'pointer', // 鼠标样式
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: {color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
type: 'pie',
name: '组织派单占比',
data:
[
<#for item : map.entrySet()>
['${item.getKey()}', ${item.getValue()}],
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("个人绩效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">个人绩效统计</li>
<#if ZmrPathRule.check(request, "/designerPerformanceStat.htm")><li onclick="Z.L.href('designerPerformanceStat.htm');">设计师绩效统计</li></#if>
<#if ZmrPathRule.check(request, "/notTimeoutCompleteOrderHistory.htm")><li onclick="Z.L.href('notTimeoutCompleteOrderHistory.htm');">时效绩效</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/personalPerformanceStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>
查询日期:
<select name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : yearList>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">
<tr>
<td colspan="4" class="z-bold">个人绩效统计表</td>
</tr>
<tr class="z-bg-gray">
<td width="120">类别</td>
<td width="100">数值</td>
<td width="100">金额&ensp;&ensp;&ensp;&ensp;&ensp;(单位/元)</td>
</tr>
<tr>
<td>设计</td>
<td>${stat.getDesignCompleteSum()}</td>
<td>${Amounts.toYuan(stat.getDesignAmount())}</td>
</tr>
<tr>
<td>疑难订单</td>
<td>${stat.getOrderTypeSum()}</td>
<td>${Amounts.toYuan(stat.getOrderTypeAmount())}</td>
</tr>
<tr>
<td>退款率</td>
<td>${Amounts.toYuan(stat.getRefundRate())}%</td>
<td>${Amounts.toYuan(stat.getRefundAmount())}</td>
</tr>
<tr>
<td>质检绩效</td>
<td>${stat.getQcScore()}</td>
<td>${Amounts.toYuan(stat.getQcAmount())}</td>
</tr>
<tr>
<td>售后扣罚</td>
<td>${stat.getAfterCount()}</td>
<td>-${Amounts.toYuan(stat.getAfterLossAmount())}</td>
</tr>
<#if stat.getIsGroupLeader() ==1>
<tr>
<td colspan="2" align="left">小组绩效</td>
<td>${groupBringAmount}</td>
</tr>
</#if>
<tr class="z-bold">
<td colspan="2" align="left">总金额</td>
<td>${amountSum}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,57 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<script>
function doViewDetail(designId)
{
var dialog = new Z.Dialog();
dialog.title = "质检违规详情";
dialog.url = "/qcViolationsDetail.htm?designId=" + designId;
dialog.width = 800;
dialog.height = 600;
dialog.execute();
}
</script>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>质检违规订单</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="150">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="100">派单类型</td>
<td width="90">录单时间</td>
<td width="90">质检时间</td>
<td width="90">质检状态</td>
<td width="100">操作</td>
</tr>
<#if pageResult.total() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在退款订单</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>
<#if item.getReceiveType() == 0>手动领单</#if>
<#if item.getReceiveType() == 1>自动派单</#if>
<#if item.getReceiveType() == 2>指定派单</#if>
</td>
<td>${Sqls.toDateTimeString(item.getCreateTime())}</td>
<td>${Sqls.toDateTimeString(item.getQcTime())}</td>
<td>
<#if item.getQcFlag()==0><span>未质检</span></#if>
<#if item.getQcFlag()==1><span>质检正常</span></#if>
<#if item.getQcFlag()==2><span class="z-text-red">质检违规</span></#if>
</td>
<td><#if item.getQcFlag() == 2><button class="z-button z-blue z-w80" onclick="doViewDetail(${item.getDesignId()})">详情</button></#if></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryQcDisposeInfo")}
@@ -0,0 +1,56 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<script>
function doViewDetail(designId)
{
var dialog = new Z.Dialog();
dialog.title = "质检违规详情";
dialog.url = "/qcViolationsDetail.htm?designId=" + designId;
dialog.width = 800;
dialog.height = 600;
dialog.execute();
}
</script>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>质检订单列表</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="150">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="100">派单类型</td>
<td width="90">录单时间</td>
<td width="90">质检时间</td>
<td width="90">质检状态</td>
<td width="100">操作</td>
</tr>
<#if pageResult.total() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在质检违规订单</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>
<#if item.getReceiveType() == 0>手动领单</#if>
<#if item.getReceiveType() == 1>自动派单</#if>
<#if item.getReceiveType() == 2>指定派单</#if>
</td>
<td>${Sqls.toDateTimeString(item.getCreateTime())}</td>
<td>${Sqls.toDateTimeString(item.getQcTime())}</td>
<td>
<#if item.getQcFlag()==1>质检正常</#if>
<#if item.getQcFlag()==2><span class="z-text-red">质检违规</span></#if>
</td>
<td><button class="z-button z-blue z-w80" onclick="doViewDetail(${item.getDesignId()})">详情</button></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryQcOrderInfo")}
@@ -0,0 +1,133 @@
<#def designatedPath="/qcReasonStat.htm"/>
<script>
Z.onload(function()
{
doQueryQcOrderInfo(1);
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
var start=1,//忽略第一行,从第二行开始
end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseFloat(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column-1].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),3);
calcTotal(document.getElementById('statTable'),4);
});
var designer;
function doQueryQcOrder(designers)
{
designer = designers;
doQueryQcOrderInfo(1);
}
function doQueryQcOrderInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryQcOrder");
ajax.addParam("page",page);
ajax.addParam("year", Z("#year").val());
ajax.addParam("month", Z("#month").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("设计师质检统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('qcReasonStat.htm');">质检原因统计</li>
<li class="z-active">设计师质检统计</li>
<#if ZmrPathRule.check(request, "/qcDisposeStat.htm")><li onclick="Z.L.href('/qcDisposeStat.htm')">质检处理统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="qcDesignerStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select id="year" name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : yearList>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select id="month" name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<option value="1" <#if month==1>selected</#if>>1</option>
<option value="2" <#if month==2>selected</#if>>2</option>
<option value="3" <#if month==3>selected</#if>>3</option>
<option value="4" <#if month==4>selected</#if>>4</option>
<option value="5" <#if month==5>selected</#if>>5</option>
<option value="6" <#if month==6>selected</#if>>6</option>
<option value="7" <#if month==7>selected</#if>>7</option>
<option value="8" <#if month==8>selected</#if>>8</option>
<option value="9" <#if month==9>selected</#if>>9</option>
<option value="10" <#if month==10>selected</#if>>10</option>
<option value="11" <#if month==11>selected</#if>>11</option>
<option value="12" <#if month==12>selected</#if>>12</option>
</select>
<input type="hidden" name="query" id="query" value="1" >
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>序号</td>
<td>设计师</td>
<td>质检分数</td>
<td>好评加分</td>
<td>违规扣分</td>
</tr>
<#for item : modelList>
<tr class="z-h40 <#if (item.getQcScore()-item.getPunishScore()) lt 1 >z-text-red</#if>" onclick="doQueryQcOrder('${item.getDesigner()}');">
<td>${item_index + 1}</td>
<td>${item.getDesigner()}</td>
<td>${item.getQcScore()}</td>
<td>${item.getRewardScore()}</td>
<td>-${item.getPunishScore()}</td>
</tr>
</#for>
<#if modelList.size() == 0>
${zhiqim_manager_no_record(5, "暂时没有质检统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="2">总计</td>
<td></td>
<td></td>
<td></td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,121 @@
<#def designatedPath="/qcReasonStat.htm"/>
<script>
Z.onload(function()
{
doQueryQcDisposeInfo(1);
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
var start=1,//忽略第一行,从第二行开始
end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseInt(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column-1].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),3);
var divisor = document.getElementById("divisor").innerHTML;
var dividend = document.getElementById("dividend").innerHTML;
var answer = (dividend * 100 / divisor).toFixed(2);
document.getElementById("answer").innerHTML = answer + '%';
});
var operatorCode;
function doQueryQcDispose(operatorCodes)
{
operatorCode = operatorCodes;
doQueryQcDisposeInfo(1);
}
function doQueryQcDisposeInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryQcDispose");
ajax.addParam("page",page);
ajax.addParam("beginDate", Z("#beginDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("operatorCode", operatorCode);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("质检处理统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('qcReasonStat.htm');">质检原因统计</li>
<#if ZmrPathRule.check(request, "/qcDesignerStat.htm")><li onclick="Z.L.href('/qcDesignerStat.htm')">设计师质检统计</li></#if>
<li class="z-active">质检处理统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="qcDisposeStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<input name="beginDate" id="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}">-
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${endDate}">
<input type="hidden" name="query" id="query" value="1" >
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>序号</td>
<td>处理人</td>
<td>处理单数</td>
<td>违规单数</td>
<td>违规占比</td>
</tr>
<#for item : modelList>
<tr class="z-h40" onclick="doQueryQcDispose('${item.getOperatorCode()}');">
<td>${item_index + 1}</td>
<td>${item.getOperatorCode()}</td>
<td>${item.getQcCount()}</td>
<td>${item.getViolationsCount()}</td>
<td>${Maths.division(item.getViolationsCount()*100, item.getQcCount(), 2)}%</td>
</tr>
</#for>
<#if modelList.size() == 0>
${zhiqim_manager_no_record(5, "暂时没有质检统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="2">总计</td>
<td id="divisor"></td>
<td id="dividend"></td>
<td id="answer"></td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,90 @@
${Styles.htmlOverflowHidden()}
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var chart = Highcharts.chart('container',
{
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
title: {text: '质检违规原因分析'},
tooltip: {headerFormat: '{series.name}<br>',pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true, // 可以被选择
cursor: 'pointer', // 鼠标样式
dataLabels:
{
enabled: true,
useHTML: true,
format: '<span style=" white-space:normal;">{point.name}</span>'
+ '<span style="display:block;">订单数量:{point.y}</span>'
+ '<span style="display:block;">占比:{point.percentage:.1f} % </span>',
}
}
},
series:
[{
type: 'pie',
name: '违规原因占比',
data:
[
<#for item : map.entrySet()>
['${item.getKey()}', ${item.getValue()}],
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("质检原因统计")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div data-role="z-tabnav" class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">质检原因统计</li>
<#if ZmrPathRule.check(request, "/qcDesignerStat.htm")><li onclick="Z.L.href('/qcDesignerStat.htm');">设计师质检统计</li></#if>
<#if ZmrPathRule.check(request, "/qcDisposeStat.htm")><li onclick="Z.L.href('/qcDisposeStat.htm');">质检处理统计</li></#if>
</ul>
<div class="z-float-left z-mg10 z-lh30">
<form name="theForm" action="/qcReasonStat.htm" method="post">
&nbsp;质检日期:
<input name="beginDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${beginDate}">&nbsp;-
<input name="endDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${endDate}">
<button class="z-button z-w80 z-blue z-mg-l10"><i class="z-font z-query"></i>查询</button>
</form>
</div>
</nav>
</div>
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="60%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-h40-tr z-pd5 z-bg-white z-text-center">
<tr>
<td width="50%">违规原因</td>
<td width="50%">违规单数</td>
</tr>
<#for item : map.entrySet()>
<tr>
<td>${item.getKey()}</td>
<td>${item.getValue()}</td>
</tr>
</#for>
${zhiqim_manager_tr_no_record(pageResult, 20, "没有质检订单")}
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,138 @@
<#def designatedPath="/personalRefundRateStat.htm"/>
<script>
Z.onload(function()
{
<#if Validates.isNotEmpty(designer) >
doQueryRefund('${designer}');
</#if>
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
var start=1,//忽略第一行,从第二行开始
end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseInt(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),4);
calcTotal(document.getElementById('statTable'),7);
});
var designer;
function doQueryRefund(designers)
{
designer = designers;
doQueryRefundOrderInfo(1);
}
function doQueryRefundOrderInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryRefundDetail");
ajax.addParam("page",page);
ajax.addParam("beginDate", Z("#beginDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("退款率统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">退款率统计</li>
<#if ZmrPathRule.check(request, "/designOrderRefundStat.htm")><li onclick="Z.L.href('designOrderRefundStat.htm')">订单退款统计</li></#if>
<#if ZmrPathRule.check(request, "/designRefundOrgTotalStatistics.htm")><li onclick="Z.L.href('designRefundOrgTotalStatistics.htm')">组织退款统计</li></#if>
<#if ZmrPathRule.check(request, "/designRefundPrdTypeStatistics.htm")><li onclick="Z.L.href('designRefundPrdTypeStatistics.htm')">产品退款统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="designOrderRefundRateStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>接单日期:
<input name="beginDate" id="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="<#if Validates.isNotEmpty(beginDate)>${beginDate}<#else>${DateTimes.getFirstMonthDay()}</#if>"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120"value="<#if Validates.isNotEmpty(endDate)>${endDate}<#else>${DateTimes.getDateString()}</#if>">
<#if isOrgRoot> &emsp;设计师:<input name="designer" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designer}" maxlength="64" placeholder="设计师"></#if>
&emsp;
组织:
<select name="orgId" id="orgId" class="z-select z-w180" data-role="z-select" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : orgList>
<option value="${item.getOrgId()}" <#if item.getOrgId() == orgId>selected</#if>>${item.getOrgName()}</option>
</#for>
</select>
&emsp;&emsp;
<input type="hidden" name="query" id="query" value="1" >
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="600" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>设计师</td>
<td>设计单数</td>
<td>设计金额</td>
<td>退款单数</td>
<td>退款金额</td>
<td>退款率</td>
<td>退款金额比例</td>
</tr>
<#for item : designerStatList>
<tr class="z-h40 <#if item.getRefundRate() gt 600 >z-text-red</#if>" onclick="doQueryRefund('${item.getDesigner()}');">
<td>${item.getDesigner()}</td>
<td>${item.getSumCount()}</td>
<td>${Amounts.toYuan(item.getFinalizeMoneySum())}</td>
<td>${item.getRefundCount()}</td>
<td>${Amounts.toYuan(item.getRefundMoneySum())}</td>
<td>${Amounts.toYuan(item.getRefundRate())}%</td>
<td>${CalculationUtil.designerRefundCalculate(item.getFinalizeMoneySum(),item.getRefundMoneySum())}</td>
</tr>
</#for>
<#if completeList.size() == 0>
${zhiqim_manager_no_record(5, "暂时没有退款率统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td>总计</td>
<td>${sum}</td>
<td></td>
<td>${refundSum}</td>
<td></td>
<td><#if sum gt 0>${Maths.division(refundSum*100, sum, 1)}%<#else>0.0%</#if></td>
<td>${CalculationUtil.designerRefundCalculate(finalizeMoneyMerge,refundMoneyMerge)}</td>
<td></td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,94 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '订单退款总统计(总单量:'+${allCount}+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '百分比',
colorByPoint: true,
data:[
<#for key : map.keySet()>
{name: '${key}',y: ${map.get(key)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("订单退款统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/designOrderRefundRateStat.htm")><li onclick="Z.Location.href('designOrderRefundRateStat.htm')">退款率统计</li></#if>
<li class="z-active">订单退款统计</li>
<#if ZmrPathRule.check(request, "/designRefundOrgTotalStatistics.htm")><li onclick="Z.L.href('designRefundOrgTotalStatistics.htm')">组织退款统计</li></#if>
<#if ZmrPathRule.check(request, "/designRefundPrdTypeStatistics.htm")><li onclick="Z.L.href('designRefundPrdTypeStatistics.htm')">产品退款统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designOrderRefundStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>录单时间:
<input name="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}"> -
<input name="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100 z-mg-r30 " value="${endDate}">
<button class="z-large z-w120 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="60%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">
<tr class="z-bg-gray">
<td width="200">订单类型</td>
<td width="150">单量</td>
<td width="*">百分比</td>
</tr>
<#for key : map.keySet()>
<tr>
<td>${key}</td>
<td>${map.get(key)}</td>
<td><#if allCount gt 0>${Maths.division(map.get(key)*100, allCount, 1)}%<#else>0.0%</#if></td>
</tr>
</#for>
<tr class="z-bold">
<td>总单量</td>
<td colspan="2">${allCount}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,116 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var orgAllOrder = '${refundOrgMergeCount}';
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '组织退款总统计(总退款量:'+orgAllOrder+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '组织退款占比',
colorByPoint: true,
data:[
<#for item : pieMap.keySet()>
{name: '${item}',y: ${pieMap.get(item)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("组织退款统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/designOrderRefundRateStat.htm")><li onclick="Z.Location.href('designOrderRefundRateStat.htm')">退款率统计</li></#if>
<#if ZmrPathRule.check(request, "/designOrderRefundStat.htm")><li onclick="Z.L.href('designOrderRefundStat.htm')">订单退款统计</li></#if>
<li class="z-active">组织退款统计</li>
<#if ZmrPathRule.check(request, "/designRefundPrdTypeStatistics.htm")><li onclick="Z.L.href('designRefundPrdTypeStatistics.htm')">产品退款统计</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designRefundOrgTotalStatistics.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="submit" class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left" style="text-align:center">
<tr class="z-bold">
<td width="20%">组织名称</td>
<td width="10%">总接单量</td>
<td width="10%">退款单量</td>
<td width="10%">退款率</td>
<td width="15%">退款金额</td>
<td width="15%">总订单金额</td>
<td width="20%">组织金额退款比例</td>
</tr>
<#for item : refundOrgList>
<tr>
<td>${item.getOrgName()}</td>
<td>${item.getOrgOrderCount()}</td>
<td>${item.getOrgRefundCount()}</td>
<td>${CalculationUtil.designerRefundCalculate(item.getOrgOrderCount(),item.getOrgRefundCount())}</td>
<td>${Amounts.toYuan(item.getOrgRefundMoneySum())}</td>
<td>${Amounts.toYuan(item.getOrgOrderMoneySum())}</td>
<td>${CalculationUtil.designerRefundCalculate(item.getOrgOrderMoneySum(),item.getOrgRefundMoneySum())}</td>
</tr>
</#for>
<tr class="z-bold">
<td>总计</td>
<td>${orgOrderMergeCount}</td>
<td>${refundOrgMergeCount}</td>
<td>${CalculationUtil.designerRefundCalculate(orgOrderMergeCount,refundOrgMergeCount)}</td>
<td>${Amounts.toYuan(refundOrgMoneySum)}</td>
<td>${Amounts.toYuan(orgOrderMoneySum)}</td>
<td>${CalculationUtil.designerRefundCalculate(orgOrderMoneySum / 100,refundOrgMoneySum / 100)}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,116 @@
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var refundAllOrder = '${refundPrdTypeMergeCount}';
Highcharts.chart('container',
{
chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: 'pie'},
title: {text: '产品退款率总统计(总退款量:'+refundAllOrder+''},
tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true,
cursor: 'pointer',
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
name: '产品退款占比',
colorByPoint: true,
data:[
<#for item : pieMap.keySet()>
{name: '${item}',y: ${pieMap.get(item)}},
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("产品退款统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/designOrderRefundRateStat.htm")><li onclick="Z.Location.href('designOrderRefundRateStat.htm')">退款率统计</li></#if>
<#if ZmrPathRule.check(request, "/designOrderRefundStat.htm")><li onclick="Z.L.href('designOrderRefundStat.htm')">订单退款统计</li></#if>
<#if ZmrPathRule.check(request, "/designRefundOrgTotalStatistics.htm")><li onclick="Z.L.href('designRefundOrgTotalStatistics.htm')">组织退款统计</li></#if>
<li class="z-active">产品退款统计</li>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designRefundPrdTypeStatistics.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select name="year" class="z-select" data-role="z-select" data-class="z-blue">
<#for yyyy : 2018..DateTimes.getCurrentYear()>
<option value="${yyyy}" <#if year==yyyy>selected</#if>>${yyyy}</option>
</#for>
</select>
<select name="month" class="z-select" data-role="z-select" data-class="z-blue">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button type="submit" class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left" style="text-align:center">
<tr class="z-bold">
<td width="20%">产品名称</td>
<td width="10%">总单量</td>
<td width="10%">退款单量</td>
<td width="10%">退款率</td>
<td width="15%">退款金额</td>
<td width="15%">总订单金额</td>
<td width="20%">产品金额退款比例</td>
</tr>
<#for item : refundPrdTypeList>
<tr>
<td>${item.getPrdName()}</td>
<td>${item.getPrdOrderCount()}</td>
<td>${item.getPrdRefundCount()}</td>
<td>${CalculationUtil.designerRefundCalculate(item.getPrdOrderCount(),item.getPrdRefundCount())}</td>
<td>${Amounts.toYuan(item.getPrdRefundMoneySum())}</td>
<td>${Amounts.toYuan(item.getPrdOrderMoneySum())}</td>
<td>${CalculationUtil.designerRefundCalculate(item.getPrdOrderMoneySum(),item.getPrdRefundMoneySum())}</td>
</tr>
</#for>
<tr class="z-bold">
<td>总计</td>
<td>${prdTypeOrderMergeCount}</td>
<td>${refundPrdTypeMergeCount}</td>
<td>${CalculationUtil.designerRefundCalculate(prdTypeOrderMergeCount,refundPrdTypeMergeCount)}</td>
<td>${Amounts.toYuan(refundPrdTypeMoneySum)}</td>
<td>${Amounts.toYuan(prdTypeOrderMoneySum)}</td>
<td>${CalculationUtil.designerRefundCalculate(prdTypeOrderMoneySum / 100,refundPrdTypeMoneySum / 100)}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,74 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>有责退款订单</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="140">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="80">订单金额</td>
<td width="90">领单时间</td>
<td width="90">退款时间</td>
<td width="90">退款原因</td>
</tr>
<#if refundResult.total == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在退款订单</td>
</tr>
</#if>
<#for item : responsibleRefundResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>${Amounts.toYuan(item.getAmount())}</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${item.getRefundTime()}</td>
<td>${Global.get(DesignOrderRefundReasonCache.class).getName(item.getRefundReason())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(responsibleRefundResult, "doQueryRefundOrderInfo")}
<table class="z-table z-bordered z-bg-white z-text-center z-mg-t20">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>无责退款订单</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="140">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="80">订单金额</td>
<td width="90">领单时间</td>
<td width="90">退款时间</td>
<td width="90">退款原因</td>
</tr>
<#if refundResult.total == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white ">
<td colspan="11">暂不存在退款订单</td>
</tr>
</#if>
<#for item : noResponsibleRefundResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>${Amounts.toYuan(item.getAmount())}</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${item.getRefundTime()}</td>
<td>${Global.get(DesignOrderRefundReasonCache.class).getName(item.getRefundReason())}</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(noResponsibleRefundResult, "doQueryRefundOrderInfo")}
@@ -0,0 +1,84 @@
<style>
body{ text-align:center}
.div{ margin:0 auto; width:600px; height:300px; border:5px solid #F00}
</style>
<script>
var uploadmultpreview = null;
Z.onload(function()
{
var nowDate = new Date();
var year = nowDate.getFullYear();
var month = nowDate.getMonth() + 1 < 10 ? "0" + (nowDate.getMonth() + 1): nowDate.getMonth() + 1;
var day = nowDate.getDate() < 10 ? "0" + nowDate.getDate() : nowDate.getDate();
var date = year + "" + month + "" + day;
uploadmultpreview = new Z.Uploadmult();
uploadmultpreview.elem = "ZUploadmultPreview";
uploadmultpreview.fileDir = date+"/申诉图片/${designId}";
uploadmultpreview.onPreview = function(results)
{
uploadmultpreview.buildPreviewHtml("ZUploadmultPreviewLocation");
};
uploadmultpreview.onCompleted = function(results)
{//上传完成处理
var complaintReason = Z("#complaintReason").val();
var ajax = new Z.Ajax();
ajax.setClassName("ComplaintOrderPresenter");
ajax.setMethodName("saveComplaintScreenShots");
ajax.addParam("designId", ${designId});
ajax.addParam("size", results.length);
ajax.addParam("complaintReason", complaintReason);
for (var i=0;i<results.length;i++)
{
ajax.addParam("url"+i,results[i].success);
ajax.addParam("fileLength"+i, this.files[i].size)
}
ajax.setFailureAlert(function(){ Z.alert("提交失败") });
ajax.setSuccess(function()
{
Z.success("提交成功",function(){parent.location.reload();parent.Z.Dialog.close();});
});
ajax.setLoading(document);
ajax.execute();
};
uploadmultpreview.execute();
});
function doUploadmultPreview()
{//上传处理
var complaintReason = Z("#complaintReason").val();
if (complaintReason.length == 0 || complaintReason.length >200)
{
Z.alert("申诉原因不能为空且不超过200字");
return;
}
var obj = Z("#ZUploadmultPreviewLocation");
if (obj[0].children.length == 0)
{
Z.alert("请上传申诉图片");
return;
}
uploadmultpreview.upload();
}
</script>
${zhiqim_manager_content()}
<div class="z-mg5">
<textarea id="complaintReason" name="complaintReason" class="z-textarea z-w100p z-h100" style="vertical-align: middle;" maxlength="200" placeHolder="申诉原因(必填)"></textarea>
</div>
<div id="ZUploadmultPreviewLocation">
</div>
<div style="position:fixed;bottom:0px;height:50px;width:100%;background-color:#EFEFEF;border-top: solid 1px #ededed">
<div style="margin-top:10px">
<button id="ZUploadmultPreview" class="z-button z-blue z-w100">上传证据图</button>
<button class="z-button z-w100 ${zmr_color_class}" id="designOrderDraft" onclick="doUploadmultPreview();">提交申诉</button>&nbsp;&nbsp;&nbsp;
</div>
</div>
<br><br>
${zhiqim_manager_content_end()}
</html>
@@ -0,0 +1,172 @@
<#def designatedPath="/personalRefundRateStat.htm"/>
<script>
function doComplaint(designId)
{
var dialog = new Z.Dialog();
dialog.title = "退款订单申诉";
dialog.url = "/personalRefundComplaint.htm?designId=" + designId;
dialog.width = 800;
dialog.height = 500;
dialog.execute();
}
</script>
${zhiqim_manager_breadcrumb("设计退款率统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">个人退款率统计</li>
<#if ZmrPathRule.check(request, "/designOrderRefundRateStat.htm")><li onclick="Z.L.href('designOrderRefundRateStat.htm')">设计退款率统计</li></#if>
<#if ZmrPathRule.check(request, "/designOrderRefundStat.htm")><li onclick="Z.L.href('designOrderRefundStat.htm')">订单退款总统计</li></#if>
<#if ZmrPathRule.check(request, "/designRefundOrgTotalStatistics.htm")><li onclick="Z.L.href('designRefundOrgTotalStatistics.htm')">组织退款统计</li></#if>
<#if ZmrPathRule.check(request, "/designRefundPrdTypeStatistics.htm")><li onclick="Z.L.href('designRefundPrdTypeStatistics.htm')">产品退款统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="personalRefundRateStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<input name="beginDate" id="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120" value="<#if Validates.isNotEmpty(beginDate)>${beginDate}<#else>${DateTimes.getFirstMonthDay()}</#if>"> -
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w120"value="<#if Validates.isNotEmpty(endDate)>${endDate}<#else>${DateTimes.getDateString()}</#if>">
<input type="hidden" name="query" id="query" value="1" >
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40">
<td>设计师</td>
<td>设计单数</td>
<td>退款单数</td>
<td>退款率</td>
<td>奖罚金</td>
</tr>
<#if refundList.size() == 0>
${zhiqim_manager_no_record(5, "暂时没有退款率统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td>${designer}</td>
<td>${list.size()}</td>
<td>${refundResult.total}</td>
<td><#if list.size() gt 0>${Maths.division(refundResult.total()*100, list.size(), 1)}%<#else>0.0%</#if></td>
<td>${Amounts.toYuan(amount)}</td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" >
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>退款订单</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="90">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="100">派单类型</td>
<td width="90">领单时间</td>
<td width="90">退款时间</td>
<td width="90">申诉状态</td>
<td width="150">申诉退回原因</td>
<td width="120">操作</td>
</tr>
<#if refundResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在退款订单</td>
</tr>
</#if>
<#for item : refundResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>
<#if item.getReceiveType() == 0>手动领单</#if>
<#if item.getReceiveType() == 1>自动派单</#if>
<#if item.getReceiveType() == 2>指定派单</#if>
</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${item.getRefundTime()}</td>
<td>
<#if item.getComplaintFlag()==0>未申诉</#if>
<#if item.getComplaintFlag()==1>申诉成功</#if>
<#if item.getComplaintFlag()==2><span class="z-text-red">申诉失败</span></#if>
<#if item.getComplaintFlag()==3><span class="z-text-blue z-bold">申诉中</span></#if>
</td>
<td><span style='width:150px; white-space:nowrap; text-overflow:ellipsis; display:block; overflow:hidden;' title="${item.getComplaintBackReason()}">${item.getComplaintBackReason()}</span></td>
<td><#if item.getComplaintFlag() == 0 || item.getComplaintFlag() == 2><button class="z-button z-blue z-w80" onclick="doComplaint(${item.getDesignId()})">申诉</button></#if></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging(refundResult, "personalRefundRateStat.htm")}
<table class="z-table z-bordered z-bg-white z-text-center z-mg-t20">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>退款申诉通过订单</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="90">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="100">派单类型</td>
<td width="90">领单时间</td>
<td width="90">退款时间</td>
<td width="90">申诉状态</td>
</tr>
<#if passResult.size() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在退款申诉通过订单</td>
</tr>
</#if>
<#for item : passResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>
<#if item.getReceiveType() == 0>手动领单</#if>
<#if item.getReceiveType() == 1>自动派单</#if>
<#if item.getReceiveType() == 2>指定派单</#if>
</td>
<td>${Sqls.toDateTimeString(item.getDesignReceiveTime())}</td>
<td>${item.getRefundTime()}</td>
<td>
<#if item.getComplaintFlag()==0>未申诉</#if>
<#if item.getComplaintFlag()==1>申诉成功</#if>
<#if item.getComplaintFlag()==2><span class="z-text-red">申诉失败</span></#if>
<#if item.getComplaintFlag()==3><span class="z-text-blue z-bold">申诉中</span></#if>
</td>
</tr>
</#for>
</table>
${zhiqim_manager_paging(passResult)}
</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,85 @@
<script>
</script>
${zhiqim_manager_breadcrumb("订单预约统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">组员预约情况</li>
<li onclick="Z.L.href('subscribeStatAll.htm');">组织预约情况</li>
</ul>
</nav>
</div>
<#-- 列表 -->
<table class="z-table zi-bd zi-bd-b-none z-pd5 z-bg-white">
<tr class="z-h40">
<td width="*" class="z-bold z-px15 z-text-left">当前组织:${currentOrgName}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计师总人数:${operatorNum}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计师预约总人数:${subscribeOperatorNum}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预约总单量:${subscribeSum}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接单总单量:${finishSum}</td>
</tr>
</table>
<table class="z-table">
<tr>
<td width="400" valign="top">
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="7">选中日期:${selectedDay}</td>
</tr>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="14%">周日</td>
<td width="14%">周一</td>
<td width="14%">周二</td>
<td width="14%">周三</td>
<td width="14%">周四</td>
<td width="14%">周五</td>
<td width="14%">周六</td>
</tr>
<#for item : list>
<#if item_index % 7 == 0>
<tr class="">
</#if>
<td onclick="Z.L.href('subscribeStat.htm?dutyTime=${item.getDutyTime()}')" class="" <#if item.getDutyMonth() != "currMonth">style="background-color:#f5f5f5;"</#if> <#if item.getDutyTime() == selectedDay>style="border: 1px solid #00a2eb;"</#if>>
<div class="z-pd3" style="line-height:2;text-align:left;">
<span style="margin:0px 0px 0px 10px; color:#bbbbbb;">${item.getDay()}号 </span>
<#if item.getDutyTime() == today>
<span class="z-float-right" style="width:8px;height:8px;border-radius:50%;background-color:#14DE00;"></span>
</#if>
</div>
</td>
<#if item_index % 7 == 6>
</tr>
</#if>
</#for>
</table>
</td>
<td width="10"></td>
<td width="*" id="result" valign="top">
<table class="z-table z-bordered z-h40-tr z-pd6 z-bg-white z-text-center">
<tr bgcolor="${zmr_thead_bgcolor}">
<td width="30%">设计师名称</td>
<td width="10%">预约单量</td>
<td width="10%">接单数量</td>
<td width="10%">定稿数量</td>
<td width="10%">接单时长</td>
<td width="*">状态</td>
</tr>
<#for item : subscribeDesignerQuotaRecordList>
<tr ${zhiqim_manager_tr_onmouse()}>
<td>${item.getOperatorCode()}</td>
<td>${item.getSubscribeNum()}</td>
<td>${item.getFinishedNum()}</td>
<td>${item.getDingGaoSum()}</td>
<td><#if item.getJieDanOnlineTime()/60 gt 0>${item.getJieDanOnlineTime()/60}小时</#if>${item.getJieDanOnlineTime()%60}分钟</td>
<td><#if item.getSubscribeState() ==2 >已预约</#if><#if item.getSubscribeState() !=2 >未预约</#if></td>
</tr>
</form>
</#for>
</table>
</tb>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,90 @@
<script>
</script>
${zhiqim_manager_breadcrumb("订单预约统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li onclick="Z.L.href('subscribeStat.htm');">组员预约情况</li>
<li class="z-active">组织预约情况</li>
</ul>
</nav>
</div>
<#-- 列表 -->
<table class="z-table zi-bd zi-bd-b-none z-pd5 z-bg-white">
<tr class="z-h40">
<td width="*" class="z-bold z-px15 z-text-left">组织数量:${zmrOrgModelList.size()}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计师预约总人数:${allSubscribeOperatorNum}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预约总单量:${allSubscribeSum}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接单总单量:${allFinishSum}</td>
</tr>
</table>
<table class="z-table">
<tr>
<td width="400" valign="top">
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="7">选中日期:${selectedDay}</td>
</tr>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="14%">周日</td>
<td width="14%">周一</td>
<td width="14%">周二</td>
<td width="14%">周三</td>
<td width="14%">周四</td>
<td width="14%">周五</td>
<td width="14%">周六</td>
</tr>
<#for item : list>
<#if item_index % 7 == 0>
<tr>
</#if>
<td onclick="Z.L.href('subscribeStatAll.htm?dutyTime=${item.getDutyTime()}')" class="" <#if item.getDutyMonth() != "currMonth">style="background-color:#f5f5f5;"</#if> <#if item.getDutyTime() == selectedDay>style="border: 1px solid #00a2eb;"</#if>>
<div class="z-pd3" style="line-height:2;text-align:left;">
<span style="margin:0px 0px 0px 10px; color:#bbbbbb;">${item.getDay()}号 </span>
<#if item.getDutyTime() == today>
<span class="z-float-right" style="width:8px;height:8px;border-radius:50%;background-color:#14DE00;"></span>
</#if>
</div>
</td>
<#if item_index % 7 == 6>
</tr>
</#if>
</#for>
</table>
</td>
<td width="10"></td>
<td width="*" id="result" valign="top">
<table class="z-table z-bordered z-h40-tr z-pd6 z-bg-white z-text-center">
<tr bgcolor="${zmr_thead_bgcolor}">
<td width="30%">组织名称</td>
<td width="10%">设计师总人数</td>
<td width="10%">设计师预约总人数</td>
<td width="10%">预约总单量</td>
<td width="10%">接单总单量</td>
<td width="*">进度</td>
</tr>
<#for item : zmrOrgModelList>
<tr ${zhiqim_manager_tr_onmouse()}>
<td>${item.getOrgName()}</td>
<td>${item.getOperatorNum()}</td>
<td>${item.getSubscribeOperatorNum()}</td>
<td>${item.getSubscribeSum()}</td>
<td>${item.getFinishSum()}</td>
<td>
<div style="margin-left: 10px;margin-right: 10px;height:7px;border:solid 1px #33CC00;border-radius: 5px;">
<div style="width:${item.getFinishRate()}%;height:100%;background-color:#33CC00;"></div>
</div>
<label style="float:right;margin-right: 10px;">${item.getFinishRate()}%</label>
</td>
</tr>
</form>
</#for>
</table>
</tb>
</tr>
</table>
${zhiqim_manager_content_end()}