first commit
This commit is contained in:
@@ -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, ' ');
|
||||
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"> <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">共 <span class="z-text-red">'+afterDetail.length+'</span> 条数据 </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"> 统计查询条件:</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, ' ');
|
||||
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">共 <span class="z-text-red">'+detailList.length+'</span> 条数据 </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">共 <span class="z-text-red">'+detailList.length+'</span> 条数据 </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}"> -
|
||||
<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, ' ');
|
||||
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"> <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">共 <span class="z-text-red">'+afterDetail.length+'</span> 条数据 </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"> 统计查询条件:</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"> 组 织
|
||||
<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, ' ');
|
||||
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"> <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">共 <span class="z-text-red">'+afterDetail.length+'</span> 条数据 </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"> <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> 共 <span class="z-text-red">'+canceledDetail.length+'</span> 条数据 </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"> 统计查询条件:</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"> 统计查询条件:</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}">
|
||||
  设计师:
|
||||
<input name="designer" id="designer" class="z-input ${zmr_color_class} z-w120" >
|
||||
  <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"> <#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"> 统计查询条件:</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}">
|
||||
  设计师:
|
||||
<input name="designer" id="designer" class="z-input ${zmr_color_class} z-w120" >
|
||||
  <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"> <#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"> 统计查询条件:</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}">
|
||||
  设计师:
|
||||
<input name="designer" id="designer" class="z-input ${zmr_color_class} z-w120" >
|
||||
  <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"> <#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"> 统计查询条件:</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>  设计师:<input name="designer" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designer}" maxlength="64" placeholder="设计师"></#if>
|
||||
|
||||
|
||||
  
|
||||
组织:
|
||||
|
||||
<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>
|
||||
  
|
||||
<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"> 大金额  (100-150)</td>
|
||||
<td width="100"> 大金额  (150-200)</td>
|
||||
<td width="100"> 大金额  (200-250)</td>
|
||||
<td width="100"> 大金额  (250-300)</td>
|
||||
<td width="100"> 大金额  (300-350)</td>
|
||||
<td width="100"> 大金额  (350-400)</td>
|
||||
<td width="100"> 大金额  (400-450)</td>
|
||||
<td width="100"> 大金额  (450-500)</td>
|
||||
<td width="100"> 大金额  (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"> 统计查询条件</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">
|
||||
 设计师:<input name="designer" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designer}" maxlength="64" placeholder="设计师">
|
||||
 
|
||||
组织:
|
||||
|
||||
<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>
|
||||
  
|
||||
<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} 绩效总金额:${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"> 统计查询条件:</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"> 组 织
|
||||
<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"> <#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"> <#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"> <#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"> <#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>订单详情 
|
||||
<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"> <#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"> <#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"> 分拣超时订单详情</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">共 <span class="z-text-red">'+(groupMembers.length+(groupLeader?1:0))+'</span> 条数据</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"> 查询条件:</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">金额     (单位/元)</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"> <#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"> <#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"> 统计查询条件:</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"> 统计查询条件:</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">
|
||||
质检日期:
|
||||
<input name="beginDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${beginDate}"> -
|
||||
<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"> 统计查询条件:</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>  设计师:<input name="designer" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designer}" maxlength="64" placeholder="设计师"></#if>
|
||||
 
|
||||
组织:
|
||||
|
||||
<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>
|
||||
  
|
||||
<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"> <#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"> <#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>
|
||||
</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"> 统计查询条件:</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"> <#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"> <#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} 设计师总人数:${operatorNum} 设计师预约总人数:${subscribeOperatorNum} 预约总单量:${subscribeSum} 接单总单量:${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()} 设计师预约总人数:${allSubscribeOperatorNum} 预约总单量:${allSubscribeSum} 接单总单量:${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()}
|
||||
Reference in New Issue
Block a user