first commit

This commit is contained in:
2025-02-20 14:59:35 +08:00
parent d7be84fac6
commit d4a3bb8ffc
2541 changed files with 336536 additions and 0 deletions
@@ -0,0 +1,215 @@
<#def designatedPath="/draftStatusOrderStat.htm"/>
<script>
Z.onload(function()
{
if (groupPerformanceMap.size() > 0)
{
showGroupMembersPromance(groupPerformanceMap._keys[0]);
}
/*
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
if (trs.length == 1)
return;
var start=1;//忽略第一行,从第二行开始
var end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseInt(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),1);
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),3);
calcTotal(document.getElementById('statTable'),4);
*/
});
var groupPerformanceMap = new Z.HashMap();
<#for groupModule : groupPerformanceMap.values()>
groupPerformanceMap.put("${groupModule.getGroup().getGroupId()}", Z.J.toObject('${groupModule}'));
</#for>
function showGroupMembersPromance(groupId)
{
var resultHtml = '';
var groupName = '';
resultHtml += '<table class="z-table z-bordered z-bg-white z-pd6 z-w50p">';
resultHtml += '<tr class="z-text-left z-h40">';
resultHtml += ' <td class="z-bold" colspan="12">[<span id="groupNameSpan" class="z-text-green">'+groupName+'</span>]设计师效绩详情</td>';
resultHtml += '</tr>';
resultHtml += '<tr class="z-text-center z-h40" bgcolor="'+'${zmr_thead_bgcolor}'+'">';
resultHtml += ' <td width="12%">设计师</td>';
resultHtml += ' <td width="12%">设计单数</td>';
resultHtml += ' <td width="12%">设计绩效</td>';
resultHtml += ' <td width="12%">特殊订单单数</td>';
resultHtml += ' <td width="12%">特殊订单绩效</td>';
resultHtml += ' <td width="12%">退款率</td>';
resultHtml += ' <td width="12%">退款绩效</td>';
resultHtml += ' <td width="*">绩效总额</td>';
resultHtml += '</tr>';
var trHtml='';
var aaa = 0;
try
{
var groupModule = groupPerformanceMap.get(''+groupId);
var group = groupModule.group;
groupName = group.groupName;
var groupLeader = groupModule.groupLeader;
if (groupLeader)
{
trHtml += '<tr class="z-text-center z-h40 z-bold">';
trHtml += ' <td>'+groupLeader.designer+'</td>';
trHtml += ' <td>'+groupLeader.designCompleteSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(groupLeader.designAmount)+'</td>';
trHtml += ' <td>'+groupLeader.orderTypeSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(groupLeader.orderTypeAmount)+'</td>';
trHtml += ' <td>'+groupLeader.refundSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(groupLeader.refundAmount)+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(parseInt(groupLeader.designAmount) + parseInt(groupLeader.orderTypeAmount) + parseInt(groupLeader.refundAmount))+'</td>';
trHtml += '</tr>';
aaa += parseInt(groupLeader.designAmount) + parseInt(groupLeader.orderTypeAmount) + parseInt(groupLeader.refundAmount);
}
var groupMembers = groupModule.members;
for(var i = 0; i < groupMembers.length; i++)
{
var member = groupMembers[i];
trHtml += '<tr class="z-text-center z-h40 ">';
trHtml += ' <td>'+member.designer+'</td>';
trHtml += ' <td>'+member.designCompleteSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(member.designAmount)+'</td>';
trHtml += ' <td>'+member.orderTypeSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(member.orderTypeAmount)+'</td>';
trHtml += ' <td>'+member.refundSum+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(member.refundAmount)+'</td>';
trHtml += ' <td>'+Z.Amounts.toYuanMustRadix(parseInt(member.designAmount) + parseInt(member.orderTypeAmount) + parseInt(member.refundAmount))+'</td>';
trHtml += '</tr>';
aaa += parseInt(member.designAmount) + parseInt(member.orderTypeAmount) + parseInt(member.refundAmount);
}
console.log(aaa)
if (!groupLeader && groupMembers.length == 0)
{
trHtml += '<tr class="z-text-center z-h40">';
trHtml += ' <td colspan="12">暂时没有数据信息</td>';
trHtml += '</tr>';
}
else
{
trHtml += '<tr class="z-text-right z-h40">';
trHtml += ' <td colspan="12">共&nbsp;<span class="z-text-red">'+(groupMembers.length+(groupLeader?1:0))+'</span>&nbsp;条数据</td>';
trHtml += '</tr>';
}
resultHtml +=trHtml;
}
catch(e)
{
resultHtml += '<tr class="z-text-center z-h40">';
resultHtml += ' <td colspan="12">暂时没有数据信息</td>';
resultHtml += '</tr>';
Z.failure("加载数据异常");
console.error(e);
}
resultHtml += '</table>';
Z("#result").html(resultHtml);
Z("#groupNameSpan").html(groupName);
}
</script>
${zhiqim_manager_breadcrumb("定稿统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.L.href('personalPerformanceStat.htm');">个人绩效统计</li>
<li onclick="Z.L.href('designerPerformanceStat.htm');">设计师绩效统计</li>
<li class="z-active">设计组绩效统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="designGroupPerformanceStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>
设计组选择:
<select name="groupId" class="z-select z-w120 z-mg-r10" data-role="z-select" data-class="${zmr_color_class}">
<option>全部</option>
<#for item : groupList>
<option value="item.getGroupId()" <#if item.getGroupId()==groupId>selected</#if>>${item.getGroupName()}</option>
</#for>
</select>
查询日期:
<select name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : 2017..DateTimes.getCurrentYear()>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<option value="1" <#if month==1>selected</#if>>1</option>
<#for item : 1..12>
<option value="${item}" <#if item == month>selected</#if>>${item}</option>
</#for>
</select>
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="500" valign="top">
<table id="statTable" class="z-table z-bordered z-pd6 z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td>设计组</td>
<td>总定稿单数</td>
<td>平均定稿单数</td>
<td>人数</td>
<td>总设计绩效</td>
</tr>
<#for groupModule : groupPerformanceMap.values()>
<tr class="z-h40" bgcolor="${zhiqim_manager_tr_bg(groupModule_index)}" onclick="showGroupMembersPromance('${groupModule.getGroup().getGroupId()}');">
<td>${groupModule.getGroup().getGroupName()}</td>
<td>${groupModule.getGroupCompleteSum()}</td>
<td>${groupModule.getGroupCompleteAvgCount()}</td>
<td>${groupModule.getMembers().size()+(groupModule.getGroupLeader() != null ? 1 : 0)}</td>
<td>${Amounts.toYuanMustRadix(groupModule.getGroupPerformanceAmount())}</td>
</tr>
</#for>
<#if groupPerformanceMap.size() == 0>
${zhiqim_manager_no_record(10, "暂时没有定稿统计信息")}
<#else>
<tr class="z-text-right z-h40">
<td colspan="10">共<span class=" z-mg-l5 z-mg-r5 z-text-red">${groupPerformanceMap.size()}</span>条数据</td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,96 @@
<#def designatedPath="/personalPerformanceStat.htm"/>
${zhiqim_manager_breadcrumb("设计师绩效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.L.href('personalPerformanceStat.htm');">个人绩效统计</li>
<li class="z-active">设计师绩效统计</li>
<#if ZmrPathRule.check(request, "/notTimeoutCompleteOrderHistory.htm")><li onclick="Z.L.href('notTimeoutCompleteOrderHistory.htm');">时效绩效</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/designerPerformanceStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>
设计师:
<select name="operatorCode" class="z-select z-w140" data-role="z-select-search" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : designerList>
<option value="${item.getOperatorCode()}" <#if item.getOperatorCode() == operatorCode>selected</#if>>${item.getOperatorCode()}</option>
</#for>
</select>
查询日期:
<select name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : yearList>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<br>
<#-- 分页列表-->
<div class="z-w100p">
<table class="z-table z-bordered z-bg-white z-pd6 z-w50p">
${zhiqim_manager_tr_title(20,"设计师绩效统计")}
<tr class="z-text-center z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="130" class="z-bold">设计师</td>
<td width="120">设计单数</td>
<td width="125">设计绩效</td>
<td width="130">特殊订单单数</td>
<td width="145">特殊订单绩效</td>
<td width="120">退款率</td>
<td width="125">退款绩效</td>
<td width="120">质检分</td>
<td width="125">质检绩效</td>
<td width="120">售后单数</td>
<td width="125">售后扣罚</td>
<td width="125">小组绩效</td>
<td width="*">绩效总额</td>
</tr>
<#for item : pageResult.list()>
<tr class="z-text-center z-h40">
<td>${item.getDesigner()}</td>
<td>${item.getDesignCompleteSum()}</td>
<td>${Amounts.toYuan(item.getDesignAmount())}</td>
<td>${item.getOrderTypeSum()}</td>
<td>${Amounts.toYuan(item.getOrderTypeAmount())}</td>
<td>${Amounts.toYuan(item.getRefundRate())}%</td>
<td>${Amounts.toYuan(item.getRefundAmount())}</td>
<td>${item.getQcScore()}</td>
<td>${Amounts.toYuan(item.getQcAmount())}</td>
<td>${item.getAfterCount()}</td>
<td>-${Amounts.toYuan(item.getAfterLossAmount())}</td>
<#var groupAmount=groupMap.get(item.getDesigner())/>
<#if groupAmount != null>
<td>${Amounts.toYuan(groupAmount)}</td>
<#else>
<td>0</td>
</#if>
<#var amount=amountMap.get(item.getDesigner())/>
<td>${Amounts.toYuan(amount)}</td>
</tr>
</#for>
<#if pageResult.size() == 0>
${zhiqim_manager_no_record(20, "暂时没有设计师绩效")}
</#if>
</div>
${zhiqim_manager_paging(pageResult, "designerPerformanceStat.htm")}
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,138 @@
<#def designatedPath="/personalPerformanceStat.htm"/>
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function load()
{
Highcharts.setOptions({
colors: ['#696969', '#D3D3D3', '#778899']
});
//饼图
var chart = Highcharts.chart('container',
{
title: {text: '绩效分析(总金额:${amountSum}'},
tooltip: {headerFormat: '{series.name}<br>',pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true, // 可以被选择
cursor: 'pointer', // 鼠标样式
dataLabels:
{
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: {color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}
}
}
},
series:
[{
type: 'pie',
name: '组织派单占比',
data:
[
<#for item : map.entrySet()>
['${item.getKey()}', ${item.getValue()}],
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("个人绩效统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">个人绩效统计</li>
<#if ZmrPathRule.check(request, "/designerPerformanceStat.htm")><li onclick="Z.L.href('designerPerformanceStat.htm');">设计师绩效统计</li></#if>
<#if ZmrPathRule.check(request, "/notTimeoutCompleteOrderHistory.htm")><li onclick="Z.L.href('notTimeoutCompleteOrderHistory.htm');">时效绩效</li></#if>
</ul>
</nav>
</div>
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form name="theForm" action="/personalPerformanceStat.htm">
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>
查询日期:
<select name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : yearList>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<#for mm : 1..12>
<option value="${mm}" <#if month==mm>selected</#if>>${mm}</option>
</#for>
</select>
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</tr>
</table>
</form>
<#-- 分页列表-->
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="50%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-pd10 z-bg-white z-text-left">
<tr>
<td colspan="4" class="z-bold">个人绩效统计表</td>
</tr>
<tr class="z-bg-gray">
<td width="120">类别</td>
<td width="100">数值</td>
<td width="100">金额&ensp;&ensp;&ensp;&ensp;&ensp;(单位/元)</td>
</tr>
<tr>
<td>设计</td>
<td>${stat.getDesignCompleteSum()}</td>
<td>${Amounts.toYuan(stat.getDesignAmount())}</td>
</tr>
<tr>
<td>疑难订单</td>
<td>${stat.getOrderTypeSum()}</td>
<td>${Amounts.toYuan(stat.getOrderTypeAmount())}</td>
</tr>
<tr>
<td>退款率</td>
<td>${Amounts.toYuan(stat.getRefundRate())}%</td>
<td>${Amounts.toYuan(stat.getRefundAmount())}</td>
</tr>
<tr>
<td>质检绩效</td>
<td>${stat.getQcScore()}</td>
<td>${Amounts.toYuan(stat.getQcAmount())}</td>
</tr>
<tr>
<td>售后扣罚</td>
<td>${stat.getAfterCount()}</td>
<td>-${Amounts.toYuan(stat.getAfterLossAmount())}</td>
</tr>
<#if stat.getIsGroupLeader() ==1>
<tr>
<td colspan="2" align="left">小组绩效</td>
<td>${groupBringAmount}</td>
</tr>
</#if>
<tr class="z-bold">
<td colspan="2" align="left">总金额</td>
<td>${amountSum}</td>
</tr>
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}