first commit

Esse commit está contido em:
2025-02-20 14:59:35 +08:00
commit d4a3bb8ffc
2541 arquivos alterados com 336536 adições e 0 exclusões
@@ -0,0 +1,57 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<script>
function doViewDetail(designId)
{
var dialog = new Z.Dialog();
dialog.title = "质检违规详情";
dialog.url = "/qcViolationsDetail.htm?designId=" + designId;
dialog.width = 800;
dialog.height = 600;
dialog.execute();
}
</script>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>质检违规订单</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="150">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="100">派单类型</td>
<td width="90">录单时间</td>
<td width="90">质检时间</td>
<td width="90">质检状态</td>
<td width="100">操作</td>
</tr>
<#if pageResult.total() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在退款订单</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>
<#if item.getReceiveType() == 0>手动领单</#if>
<#if item.getReceiveType() == 1>自动派单</#if>
<#if item.getReceiveType() == 2>指定派单</#if>
</td>
<td>${Sqls.toDateTimeString(item.getCreateTime())}</td>
<td>${Sqls.toDateTimeString(item.getQcTime())}</td>
<td>
<#if item.getQcFlag()==0><span>未质检</span></#if>
<#if item.getQcFlag()==1><span>质检正常</span></#if>
<#if item.getQcFlag()==2><span class="z-text-red">质检违规</span></#if>
</td>
<td><#if item.getQcFlag() == 2><button class="z-button z-blue z-w80" onclick="doViewDetail(${item.getDesignId()})">详情</button></#if></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryQcDisposeInfo")}
@@ -0,0 +1,56 @@
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<script>
function doViewDetail(designId)
{
var dialog = new Z.Dialog();
dialog.title = "质检违规详情";
dialog.url = "/qcViolationsDetail.htm?designId=" + designId;
dialog.width = 800;
dialog.height = 600;
dialog.execute();
}
</script>
<table class="z-table z-bordered z-bg-white z-text-center">
<tr class="z-h40">
<td class="z-text-left z-bold z-px14 z-bg-white" colspan="10">&nbsp;<#if Validates.isNotEmpty(designer)><span class="z-text-red z-bold">[${designer}]</span></#if>质检订单列表</td>
</tr>
<tr class="z-h40 z-text-center z-bg-gray">
<td width="150">订单号</td>
<td width="100">店铺</td>
<td width="100">旺旺号</td>
<td width="100">设计师</td>
<td width="*">产品</td>
<td width="100">派单类型</td>
<td width="90">录单时间</td>
<td width="90">质检时间</td>
<td width="90">质检状态</td>
<td width="100">操作</td>
</tr>
<#if pageResult.total() == 0>
<tr valign="middle" class="z-h40 z-text-center z-bg-white">
<td colspan="11">暂不存在质检违规订单</td>
</tr>
</#if>
<#for item : pageResult.list()>
<tr align="center" class="z-h40 z-pointer" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>${item.getDesignId()}</td>
<td>${item.getShopNick()}</td>
<td>${item.getBuyerNick()}</td>
<td>${item.getDesigner()}</td>
<td>${item.getOrderText()}</td>
<td>
<#if item.getReceiveType() == 0>手动领单</#if>
<#if item.getReceiveType() == 1>自动派单</#if>
<#if item.getReceiveType() == 2>指定派单</#if>
</td>
<td>${Sqls.toDateTimeString(item.getCreateTime())}</td>
<td>${Sqls.toDateTimeString(item.getQcTime())}</td>
<td>
<#if item.getQcFlag()==1>质检正常</#if>
<#if item.getQcFlag()==2><span class="z-text-red">质检违规</span></#if>
</td>
<td><button class="z-button z-blue z-w80" onclick="doViewDetail(${item.getDesignId()})">详情</button></td>
</tr>
</#for>
</table>
${zhiqim_manager_paging_jsMethod(pageResult, "doQueryQcOrderInfo")}
@@ -0,0 +1,133 @@
<#def designatedPath="/qcReasonStat.htm"/>
<script>
Z.onload(function()
{
doQueryQcOrderInfo(1);
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
var start=1,//忽略第一行,从第二行开始
end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseFloat(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column-1].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),3);
calcTotal(document.getElementById('statTable'),4);
});
var designer;
function doQueryQcOrder(designers)
{
designer = designers;
doQueryQcOrderInfo(1);
}
function doQueryQcOrderInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryQcOrder");
ajax.addParam("page",page);
ajax.addParam("year", Z("#year").val());
ajax.addParam("month", Z("#month").val());
ajax.addParam("designer", designer);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("设计师质检统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('qcReasonStat.htm');">质检原因统计</li>
<li class="z-active">设计师质检统计</li>
<#if ZmrPathRule.check(request, "/qcDisposeStat.htm")><li onclick="Z.L.href('/qcDisposeStat.htm')">质检处理统计</li></#if>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="qcDesignerStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<select id="year" name="year" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${year}">
<#for item : yearList>
<option value="${item}" <#if item==year>selected</#if>>${item}</option>
</#for>
</select>
<select id="month" name="month" class="z-select z-w110" data-role="z-select" data-class="${zmr_color_class}" value="${month}">
<option value="1" <#if month==1>selected</#if>>1</option>
<option value="2" <#if month==2>selected</#if>>2</option>
<option value="3" <#if month==3>selected</#if>>3</option>
<option value="4" <#if month==4>selected</#if>>4</option>
<option value="5" <#if month==5>selected</#if>>5</option>
<option value="6" <#if month==6>selected</#if>>6</option>
<option value="7" <#if month==7>selected</#if>>7</option>
<option value="8" <#if month==8>selected</#if>>8</option>
<option value="9" <#if month==9>selected</#if>>9</option>
<option value="10" <#if month==10>selected</#if>>10</option>
<option value="11" <#if month==11>selected</#if>>11</option>
<option value="12" <#if month==12>selected</#if>>12</option>
</select>
<input type="hidden" name="query" id="query" value="1" >
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>序号</td>
<td>设计师</td>
<td>质检分数</td>
<td>好评加分</td>
<td>违规扣分</td>
</tr>
<#for item : modelList>
<tr class="z-h40 <#if (item.getQcScore()-item.getPunishScore()) lt 1 >z-text-red</#if>" onclick="doQueryQcOrder('${item.getDesigner()}');">
<td>${item_index + 1}</td>
<td>${item.getDesigner()}</td>
<td>${item.getQcScore()}</td>
<td>${item.getRewardScore()}</td>
<td>-${item.getPunishScore()}</td>
</tr>
</#for>
<#if modelList.size() == 0>
${zhiqim_manager_no_record(5, "暂时没有质检统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="2">总计</td>
<td></td>
<td></td>
<td></td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,121 @@
<#def designatedPath="/qcReasonStat.htm"/>
<script>
Z.onload(function()
{
doQueryQcDisposeInfo(1);
var calcTotal=function(table,column)
{//合计,表格对象,对哪一列进行合计,第一列从0开始
var trs=table.getElementsByTagName('tr');
var start=1,//忽略第一行,从第二行开始
end=trs.length-1;//忽略最后一行
var total=0;
for(var i=start;i<end;i++){
var td=trs[i].getElementsByTagName('td')[column];
var t=parseInt(td.innerHTML);
if(t)total+=t;
}
trs[end].getElementsByTagName('td')[column-1].innerHTML=total;
};
calcTotal(document.getElementById('statTable'),2);
calcTotal(document.getElementById('statTable'),3);
var divisor = document.getElementById("divisor").innerHTML;
var dividend = document.getElementById("dividend").innerHTML;
var answer = (dividend * 100 / divisor).toFixed(2);
document.getElementById("answer").innerHTML = answer + '%';
});
var operatorCode;
function doQueryQcDispose(operatorCodes)
{
operatorCode = operatorCodes;
doQueryQcDisposeInfo(1);
}
function doQueryQcDisposeInfo(page)
{
var ajax = new Z.Ajax();
ajax.setClassName("StatPresenter");
ajax.setMethodName("doQueryQcDispose");
ajax.addParam("page",page);
ajax.addParam("beginDate", Z("#beginDate").val());
ajax.addParam("endDate", Z("#endDate").val());
ajax.addParam("operatorCode", operatorCode);
ajax.setCallback("result");
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("质检处理统计")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li onclick="Z.Location.href('qcReasonStat.htm');">质检原因统计</li>
<#if ZmrPathRule.check(request, "/qcDesignerStat.htm")><li onclick="Z.L.href('/qcDesignerStat.htm')">设计师质检统计</li></#if>
<li class="z-active">质检处理统计</li>
</ul>
</nav>
</div>
<table class="z-table z-bordered z-pd6">
<tr>
<td colspan="2">
<form name="theForm" action="qcDisposeStat.htm">
<table class="z-table">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td class="z-bold z-px14 zi-pd-l5">&nbsp;统计查询条件:</td>
</tr>
</table>
<table class="z-table z-bordered z-pd6">
<tr class="z-h40 z-bg-white">
<td>查询日期:
<input name="beginDate" id="beginDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${beginDate}">-
<input name="endDate" id="endDate" onfocus="Z.date(this);" readonly class="z-input ${zmr_color_class} z-w100" value="${endDate}">
<input type="hidden" name="query" id="query" value="1" >
<button class="z-mg-l10 z-button ${zmr_color_class}">查询</button>
</td>
</table>
</form>
</td>
</tr>
<tr class="z-h40">
<td width="400" valign="top">
<table class="z-table z-bordered z-pd6 z-bg-white z-text-center" id="statTable">
<tr class="z-h40">
<td>序号</td>
<td>处理人</td>
<td>处理单数</td>
<td>违规单数</td>
<td>违规占比</td>
</tr>
<#for item : modelList>
<tr class="z-h40" onclick="doQueryQcDispose('${item.getOperatorCode()}');">
<td>${item_index + 1}</td>
<td>${item.getOperatorCode()}</td>
<td>${item.getQcCount()}</td>
<td>${item.getViolationsCount()}</td>
<td>${Maths.division(item.getViolationsCount()*100, item.getQcCount(), 2)}%</td>
</tr>
</#for>
<#if modelList.size() == 0>
${zhiqim_manager_no_record(5, "暂时没有质检统计信息")}
<#else>
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td colspan="2">总计</td>
<td id="divisor"></td>
<td id="dividend"></td>
<td id="answer"></td>
</tr>
</#if>
</table>
</td>
<td width="*" id="result" valign="top" id="result" ></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,90 @@
${Styles.htmlOverflowHidden()}
${Scripts.src("/zinc/chart/highcharts.js")}
${Scripts.src("/zinc/chart/exporting.js")}
${Scripts.src("/zinc/chart/highcharts-zh_CN.js")}
<script>
Z.onload(function()
{
var chart = Highcharts.chart('container',
{
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
title: {text: '质检违规原因分析'},
tooltip: {headerFormat: '{series.name}<br>',pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'},
plotOptions:
{
pie:
{
allowPointSelect: true, // 可以被选择
cursor: 'pointer', // 鼠标样式
dataLabels:
{
enabled: true,
useHTML: true,
format: '<span style=" white-space:normal;">{point.name}</span>'
+ '<span style="display:block;">订单数量:{point.y}</span>'
+ '<span style="display:block;">占比:{point.percentage:.1f} % </span>',
}
}
},
series:
[{
type: 'pie',
name: '违规原因占比',
data:
[
<#for item : map.entrySet()>
['${item.getKey()}', ${item.getValue()}],
</#for>
]
}]
});
});
</script>
${zhiqim_manager_breadcrumb("质检原因统计")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div data-role="z-tabnav" class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">质检原因统计</li>
<#if ZmrPathRule.check(request, "/qcDesignerStat.htm")><li onclick="Z.L.href('/qcDesignerStat.htm');">设计师质检统计</li></#if>
<#if ZmrPathRule.check(request, "/qcDisposeStat.htm")><li onclick="Z.L.href('/qcDisposeStat.htm');">质检处理统计</li></#if>
</ul>
<div class="z-float-left z-mg10 z-lh30">
<form name="theForm" action="/qcReasonStat.htm" method="post">
&nbsp;质检日期:
<input name="beginDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${beginDate}">&nbsp;-
<input name="endDate" class="z-input z-w100 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${endDate}">
<button class="z-button z-w80 z-blue z-mg-l10"><i class="z-font z-query"></i>查询</button>
</form>
</div>
</nav>
</div>
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr>
<td width="60%"><div id="container" class="z-bg-white" style="min-width:400px;height:600px"></div></td>
<td width="*">
<table class="z-table z-bordered-line z-h40-tr z-pd5 z-bg-white z-text-center">
<tr>
<td width="50%">违规原因</td>
<td width="50%">违规单数</td>
</tr>
<#for item : map.entrySet()>
<tr>
<td>${item.getKey()}</td>
<td>${item.getValue()}</td>
</tr>
</#for>
${zhiqim_manager_tr_no_record(pageResult, 20, "没有质检订单")}
</table>
</td>
</tr>
</table>
${zhiqim_manager_content_end()}