| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456 |
- <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/ErpView.master" AutoEventWireup="true" CodeFile="AfterSaleGather.aspx.cs" Inherits="ECharts_AfterSaleGather" %>
- <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
- <style>
- .mini-panel-header {
- height: 45px
- }
- </style>
- <script src="../js/miniui/HeaderFilter.js" type="text/javascript"></script>
- <link href="../js/miniui/HeaderFilter.css" rel="stylesheet" type="text/css" />
- <script type="text/javascript">
- let current_index = 0;
- $(() => {
- let miniTabs = mini.get("miniTabs");
- miniTabs.on("activechanged", function (e) {
- current_index = e.index;
- })
- let html = `<a class="mini-button mini-button-success" iconcls="icon-folder" onclick="exportAfterFn(this)">导出</a>`;
- $.each($(".mini-panel"), function (index, value) {
- mini.get($(this).attr("id")).setButtons([{ html }]);
- });
- })
- function exportAfterFn(that) {
- let grid = mini.get($(that).parents(".mini-panel").find(".panel").attr("id"));
- let extname = $("#hRepTitle").val();
- extname = extname == "" ? "导出报表" : extname
- if (grid == null) {
- alert("无法导出");
- return;
- }
- let columns = grid.columns;
- function getColumns(columns) {
- let cols = [];
- let h = "";
- for (let i = 0; i < columns.length; i++) {
- let column = columns[i];
- //if (!column.visible || column.header == undefined) {
- // continue;
- //}
- if (column.header == undefined || column.header == "#") {
- continue;
- }
- if (typeof column.header == "function") continue;
- if (column.header.indexOf("<") != -1) h = column.header.toString().substring(0, column.header.indexOf("<"));
- else h = column.header.toString();
- h = h.replace(/ /g, "");
- //if (i == 1) alert(h);
- //alert(column.header);
- //var col = { header: h, field: column.field, type: column.type, visible: column.visible };
- let col = { header: h, field: column.field, type: column.type, width: column.width, visible: true };
- if (column.columns) {
- col.columns = getColumns(column.columns);
- }
- cols.push(col);
- }
- return cols;
- }
- columns = getColumns(columns);
- let type = "";
- let sel_row = grid.getSelecteds();
- if (grid.multiSelect && sel_row.length > 0 || grid.url == "" || grid.showPager == false) {
- type = "bexcel";
- }
- else type = grid.url == "" ? "bexcel" : "excel";
- downLoad(grid, GetPrePath() + "/Reports/comExports.aspx", { extname: extname, url: encodeURIComponent(grid.url), type: type, columns: columns }, function () {
- //alert("导出成功");
- });
- }
- function downLoad(grid, url, fields, callback) {
- //创建Form
- var submitfrm = document.createElement("form");
- submitfrm.action = url;
- submitfrm.method = "post";
- submitfrm.target = "_blank";
- document.body.appendChild(submitfrm);
- if (fields) {
- for (var p in fields) {
- var input = mini.append(submitfrm, "<input type='hidden' name='" + p + "'>");
- var v = fields[p];
- if (typeof v != "string") v = mini.encode(v);
- input.value = v;
- }
- }
- if (grid == null) {
- alert("无法导出");
- return;
- }
- var parms = grid._dataSource.loadParams;
- for (var item in parms) {
- if (parms[item] == undefined || parms[item] == null) continue;
- mini.append(submitfrm, "<input type='hidden' name='" + item + "' value=\"" + parms[item] + "\">");
- }
- var sel_row = grid.getSelecteds();
- if (grid.multiSelect && sel_row.length > 0) {
- mini.append(submitfrm, "<input type='hidden' name='hExData' value='" + mini.encode(sel_row) + "'>");
- } else {
- if (grid.url == undefined || grid.url == "" || grid.showPager == false) {
- //ame = 'hExData' value = '" + mini.encode(grid.data)
- mini.append(submitfrm, "<input type='hidden' name='hExData' value='" + mini.encode(grid.data) + "'>");
- }
- }
- if (mini.get("txtSdate") != null && mini.get("txtSdate").getText() != "") {
- mini.append(submitfrm, "<input type='hidden' name='hExSdate' value=\"" + mini.get("txtSdate").getText() + "\">");
- }
- if (mini.get("txtEdate") != null && mini.get("txtEdate").getText() != "") {
- mini.append(submitfrm, "<input type='hidden' name='hExEdate' value=\"" + mini.get("txtEdate").getText() + "\">");
- }
- //mini.append()
- submitfrm.submit();
- setTimeout(function () {
- submitfrm.parentNode.removeChild(submitfrm);
- if (callback) callback();
- }, 1000);
- }
- //查询按钮
- function searchFn() {
- let miniTabs = mini.get("miniTabs");
- var form = new mini.Form("#ctl00_f_all");
- var data = form.getData(true, false);
- var s = data;
- let current_ele = miniTabs.getTabBodyEl(current_index);
- $.each($(current_ele).find(".panel"), function (index, value) {
- mini.get($(this).attr("id")).load({
- date1: s.afterdate1, date2: s.afterdate2, pay_date1: s.date1, pay_date2: s.date2
- })
- });
- let sup_goods_grid = mini.get("sup_goods_grid");
- let sup_after_grid = mini.get("sup_after_grid");
- let total_reason_grid = mini.get("total_reason_grid");
- new HeaderFilter(sup_goods_grid, {
- columns: [
- { name: 'goodsName' },
- { name: "ComName" }
- ],
- callback: function (column, filtered) {
- console.log(column, filtered)
- }
- });
- new HeaderFilter(sup_after_grid, {
- columns: [
- { name: 'AfterSaleReason1' },
- { name: 'AfterSaleReason2' },
- { name: 'AfterSaleReason3' },
- { name: "ComName" }
- ],
- callback: function (column, filtered) {
- console.log(column, filtered)
- }
- });
- new HeaderFilter(total_reason_grid, {
- columns: [
- { name: 'AfterSaleReason1' },
- { name: 'AfterSaleReason2' },
- { name: 'AfterSaleReason3' }
- ],
- callback: function (column, filtered) {
- console.log(column, filtered)
- }
- });
- }
- function onSearchCheckedChanged(e) {
- var btn = e.sender;
- var checked = btn.getChecked();
- var text = btn.getText();
- var form = new mini.Form("#ctl00_f_all");
- var data = form.getData(true, false);
- var s = data;
- if (checked) {
- var stime = "";
- var etime = "";
- var timearr = [];
- if (text == "本日") {
- var day = getCurDate();
- timearr.push(day);
- timearr.push(day);
- }
- else if (text == "本周") {
- timearr = getWeekStartAndEnd();
- }
- else if (text == "本月") {
- timearr = getMonthStartAndEnd();
- }
- stime = timearr[0];
- etime = timearr[1];
- grid.load({
- shopname: s.shop, designer: s.design, order_area: s.order_area, org: s.designerorg, date1: stime, date2: etime, UpDate1: s.UpDate1, UpDate2: s.UpDate2
- });
- }
- mini.get("aSearchMonth").setChecked(false);
- mini.get("aSearchDay").setChecked(false);
- mini.get("aSearchWeek").setChecked(false);
- }
- //查询本日
- function onSearchToday() {
- var form = new mini.Form("#ctl00_f_all");
- var data = form.getData(true, false);
- var s = data;
- var DateType = "Today";
- grid.load({
- shopname: s.shop, designer: s.designer, order_area: s.order_area, org: s.designerorg, dateType: DateType
- });
- }
- //查询本周
- function onSearchThisWeek() {
- var form = new mini.Form("#ctl00_f_all");
- var data = form.getData(true, false);
- var s = data;
- var DateType = "Week";
- grid.load({
- shopname: s.shop, designer: s.designer, order_area: s.order_area, org: s.designerorg, dateType: DateType
- });
- }
- //查询本月
- function onSearchThisMonth() {
- var form = new mini.Form("#ctl00_f_all");
- var data = form.getData(true, false);
- var s = data;
- var DateType = "Month";
- grid.load({
- shopname: s.shop, designer: s.designer, order_area: s.order_area, org: s.designerorg, dateType: DateType
- });
- }
- //清除查询内容
- function clearFn() {
- //$("#ctl00_f_all").find("input").val("");
- var form = new mini.Form("#ctl00_f_all");
- form.clear();
- mini.get("aSearchMonth").setChecked(false);
- mini.get("aSearchDay").setChecked(false);
- mini.get("aSearchWeek").setChecked(false);
- }
- function onDrawSummaryCell(e) {
- var result = e.result;
- var rdata = result.data;
- //console.log("result:", result);
- var totalPayment = 0;
- var allOrder = 0;
- var wait = 0;
- var designing = 0;
- var finish = 0;
- var rateAp = 0;
- var payPrice = 0;
- for (var item of rdata) {
- totalPayment += parseFloat(item.Amount);
- allOrder += parseInt(item.AllOrder);
- wait += parseInt(item.WaitDesign);
- designing += parseInt(item.Designing);
- finish += parseInt(item.DesignFinish);
- rateAp += parseFloat(item.FinalizationRate);
- payPrice += parseFloat(item.PayPrice);
- }
- var grid = e.sender;
- totalPayment = Math.floor(totalPayment * 100) / 100;
- rateAp = Math.floor(rateAp / rdata.length * 100) / 100;
- //客户端汇总计算
- if (e.field == "Amount") {
- var s = "<span style='color:Brown;'>"
- s += "合计:" + totalPayment
- + "</span>";
- e.cellHtml = s;
- }
- else if (e.field == "AllOrder") {
- var s = "<span style='color:Brown;'>"
- s += "合计:" + allOrder
- + "</span>";
- e.cellHtml = s;
- }
- else if (e.field == "WaitDesign") {
- var s = "<span style='color:Brown;'>"
- s += "合计:" + wait
- + "</span>";
- e.cellHtml = s;
- }
- else if (e.field == "Designing") {
- var s = "<span style='color:Brown;'>"
- s += "合计:" + designing
- + "</span>";
- e.cellHtml = s;
- }
- else if (e.field == "DesignFinish") {
- var s = "<span style='color:Brown;'>"
- s += "合计:" + finish
- + "</span>";
- e.cellHtml = s;
- }
- else if (e.field == "FinalizationRate") {
- var s = "<span style='color:Brown;'>"
- s += "平均:" + rateAp
- + "</span>";
- e.cellHtml = s;
- }
- else if (e.field == "PayPrice") {
- var s = "<span style='color:Brown;'>"
- s += "合计:" + payPrice
- + "</span>";
- e.cellHtml = s;
- }
- }
- </script>
- </asp:Content>
- <asp:Content ID="Content2" ContentPlaceHolderID="btn" runat="Server">
- <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportFn()">导出</a>
- </asp:Content>
- <asp:Content ID="Content4" ContentPlaceHolderID="content" runat="Server">
- <div class="mini-tabs" id="miniTabs" activeindex="0" style="width: 98%;">
- <div title="总表分析">
- <div style="display: flex; flex-direction: column; gap: 10px">
- <div style="display: flex; gap: 10px">
- <div id="total_shop_grid_panel" class="mini-panel mini-panel-info" title="店铺" style="width: 50%; padding: 0px">
- <div id="total_shop_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_shop_gather">
- <div property="columns">
- <div field="shopName" width="60" align="center" headeralign="center">店铺名称</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">成交单量</div>
- <div field="aftersaleOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
- <div field="rateProp" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后占比</div>
- </div>
- </div>
- </div>
- <div id="total_goods_grid_panel" class="mini-panel mini-panel-info" title="产品" style="width: 50%; padding: 0px">
- <div id="total_goods_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_goods_gather">
- <div property="columns">
- <div field="goodsName" width="60" align="center" headeralign="center">产品名称</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">成交单量</div>
- <div field="aftersaleOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
- <div field="rateProp" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后占比</div>
- </div>
- </div>
- </div>
- </div>
- <div style="display: flex; gap: 10px">
- <div id="total_dutyce_grid_panel" class="mini-panel mini-panel-info" title="部门" style="width: 50%; padding: 0px">
- <div id="total_dutyce_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_dutyce_gather">
- <div property="columns">
- <div field="AfterSaleReason" width="60" align="center" headeralign="center">部门名称</div>
- <div field="total" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="all" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后总量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后占比</div>
- </div>
- </div>
- </div>
- <div id="total_sale_grid_panel" class="mini-panel mini-panel-info" title="售后" style="width: 50%; padding: 0px">
- <div id="total_sale_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_gather">
- <div property="columns">
- <div field="DesignerName" width="60" align="center" headeralign="center">售后员</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">总数量</div>
- <div field="Handling" datatype="int" width="60" align="center" headeralign="center" allowsort="true">处理中</div>
- <div field="Finish" datatype="int" width="60" align="center" headeralign="center" allowsort="true">已完成</div>
- <div field="ChangeNum" datatype="int" width="60" align="center" headeralign="center" allowsort="true">判责错误数</div>
- <div field="DisagreeTime" datatype="int" width="60" align="center" headeralign="center" allowsort="true">超时数</div>
- <div field="FinishRate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">完成率</div>
- <div field="BackRate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">打回率</div>
- </div>
- </div>
- </div>
- </div>
- <div style="display: flex; gap: 10px">
- <div id="total_org_design_grid_panel" class="mini-panel mini-panel-info" title="设计部门" style="width: 50%; padding: 0px">
- <div id="total_org_design_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_org_design_gather">
- <div property="columns">
- <div field="OrgName" width="60" align="center" headeralign="center">部门名称</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">成交单量</div>
- <div field="aftersaleOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
- <div field="rateProp" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后占比</div>
- </div>
- </div>
- </div>
- <div id="total_org_custom_grid_panel" class="mini-panel mini-panel-info" title="客服部门" style="width: 50%; padding: 0px">
- <div id="total_org_custom_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_org_custom_gather">
- <div property="columns">
- <div field="OrgName" width="60" align="center" headeralign="center">部门名称</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">成交单量</div>
- <div field="aftersaleOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
- <div field="rateProp" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后占比</div>
- </div>
- </div>
- </div>
- </div>
- <div style="display: flex; gap: 10px">
- <div id="total_reason_grid_panel" class="mini-panel mini-panel-info" title="原因" style="width: 50%; padding: 0px">
- <div id="total_reason_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_reason_gather">
- <div property="columns">
- <div field="AfterSaleReason1" name="AfterSaleReason1" width="60" align="center" headeralign="center" allowsort="true">一级原因</div>
- <div field="AfterSaleReason2" name="AfterSaleReason2" datatype="int" width="60" align="center" headeralign="center" allowsort="true">二级原因</div>
- <div field="AfterSaleReason3" name="AfterSaleReason3" datatype="int" width="60" align="center" headeralign="center" allowsort="true">三级原因</div>
- <div field="total" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后占比</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div title="车间">
- <div style="display: flex; gap: 10px">
- <div id="sup_goods_grid_panel" class="mini-panel mini-panel-info" title="同产品不同车间对比" style="width: 50%; padding: 0px">
- <div id="sup_goods_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_sup_goods_gather">
- <div property="columns">
- <div field="goodsName" name="goodsName" width="60" align="center" headeralign="center">产品名称</div>
- <div field="ComName" name="ComName" datatype="int" width="60" align="center" headeralign="center" allowsort="true">车间名称</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">下单单量</div>
- <div field="aftersaleOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
- </div>
- </div>
- </div>
- <div id="sup_after_grid_panel" class="mini-panel mini-panel-info" title="售后原因" style="width: 50%; padding: 0px">
- <div id="sup_after_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%; height: 300px;" showemptytext="true" showpager="false" ondrawsummarycell="onDrawSummaryCell"
- emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_aftersale_sup_gather">
- <div property="columns">
- <div field="ComName" name="ComName" width="60" align="center" headeralign="center">车间名称</div>
- <div field="AfterSaleReason1" name="AfterSaleReason1" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因1</div>
- <div field="AfterSaleReason2" name="AfterSaleReason2" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因2</div>
- <div field="AfterSaleReason3" name="AfterSaleReason3" datatype="int" width="60" align="center" headeralign="center" allowsort="true">原因3</div>
- <div field="AllOrder" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后数量</div>
- <div field="rate" datatype="int" width="60" align="center" headeralign="center" allowsort="true">售后率</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </asp:Content>
|