فهرست منبع

新增下单数据出货率,修改异常单逻辑,修改售后页面

zhuyiyi 2 هفته پیش
والد
کامیت
120dfad560

+ 1 - 1
SiteCore/Handler/sync.getbase.cs

@@ -222,7 +222,7 @@ namespace SiteCore.Handler
 
         public void get_some_product()
         {
-            string sql = "select id,PMaterial,ptype as name from ce_erpproduct where id in ('1','14','29', '4', '27', '13', '22', '49', '41', '43') ";
+            string sql = "select id,PMaterial,ptype as name from ce_erpproduct where id in ('1','14','29', '4', '27', '13', '22', '49', '41', '43','2705') ";
             DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
             con.Response.Write(Utils.Serialization.JsonString.DataTable2MiniAjaxJson(dt));
         }

+ 332 - 0
SiteCore/Handler/sync.order.cs

@@ -13174,6 +13174,338 @@ namespace SiteCore.Handler
             writeGridDataTableJson(dtNew.Rows.Count, dtNew);
         }
 
+        public void get_place_all_order_data()
+        {
+            string date1 = GetPostString("date1");
+            string date2 = GetPostString("date2");
+            string starttime = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
+            DateTime start = DateTime.Parse(starttime);
+            string endtime = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
+            DateTime end = DateTime.Parse(endtime);
+            if (date1 != null && date1.Length > 0)
+            {
+                DateTime dateTime = DateTime.Parse(date1);
+                starttime = dateTime.ToString("yyyy-MM-dd 00:00:00");
+                start = DateTime.Parse(starttime);
+                endtime = dateTime.ToString("yyyy-MM-dd 23:59:59");
+                end = DateTime.Parse(endtime);
+            }
+            if (date2 != null && date2.Length > 0)
+            {
+                DateTime dateTime = DateTime.Parse(date2);
+                endtime = dateTime.ToString("yyyy-MM-dd 00:00:00");
+                end = DateTime.Parse(endtime);
+            }
+
+            Dictionary<string, Dictionary<string, int>> other_map = new Dictionary<string, Dictionary<string, int>>();
+
+
+            string sql = string.Format("select SupplierId,ProductId,seller_memo,ProductCount,ProductName,payment,SupplierName,FinishPlaceTime,OrderState,FinishDeliveryTime from view_ErpTradeCell where ( FinishDeliveryTime BETWEEN '{0}' AND '{1}' ) AND IsSample = 0 and SupplierId > 0 ", starttime, endtime);
+            DataTable data = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
+
+            string timer_sql = string.Format("select * from CE_ErpSupplierProductTime");
+            DataTable timer_data = DbHelper.DbConn.ExecuteDataset(timer_sql).Tables[0];
+
+            Dictionary<int, List<CeErpSupplierProductTime>> timer_map = new Dictionary<int, List<CeErpSupplierProductTime>>();
+            foreach (DataRow datarow in timer_data.Rows)
+            {
+                List<CeErpSupplierProductTime> list = null;
+                int supplierId = Convert.ToInt32(datarow["SupplierId"]);
+                if (timer_map.ContainsKey(supplierId))
+                {
+                    timer_map.TryGetValue(supplierId, out list);
+                }
+                else
+                {
+                    list = new List<CeErpSupplierProductTime>();
+                    timer_map.Add(supplierId, list);
+                    timer_map.TryGetValue(supplierId, out list);
+                }
+                CeErpSupplierProductTime ceErpSupplierProductTime = new CeErpSupplierProductTime();
+
+                ceErpSupplierProductTime.quantity = Convert.ToInt32(datarow["quantity"]);
+                ceErpSupplierProductTime.dayDeadLine = datarow["dayDeadLine"].ToString();
+                ceErpSupplierProductTime.deadLine = datarow["deadLine"].ToString();
+                ceErpSupplierProductTime.productId = datarow["productId"].ToString();
+                ceErpSupplierProductTime.craft = datarow["craft"].ToString();
+                ceErpSupplierProductTime.sendDay = Convert.ToInt32(datarow["sendDay"]);
+                list.Add(ceErpSupplierProductTime);
+
+            }
+            List<int> smSupplier = new List<int>() { 97, 121, 119, 80 };
+            foreach (DataRow row in data.Rows)
+            {
+                //存储数据
+                int productId = Convert.ToInt32(row["ProductId"]);
+                string ProductName = row["ProductName"].ToString();
+
+                int supplierId = Convert.ToInt32(row["SupplierId"]);
+                if (no_suppliers.Contains(supplierId))
+                {
+                    continue;
+                }
+                string seller_memo = row["seller_memo"].ToString();
+
+                bool ispj = false;//是否配件单
+                bool isfirst = true;//第一个配
+
+                maps.Keys.ForEach(key =>
+                {
+                    //备注包含配件
+                    if (seller_memo.Contains(key) && isfirst)
+                    {
+                        List<string> list = maps[key];
+                        ispj = true;
+                        isfirst = false;
+                        for (int i = 0; i < list.Count; i++)
+                        {
+                            if (seller_memo.Contains(list[i]))
+                            {
+                                ispj = false;
+                                break;
+                            }
+                        }
+                    }
+                });
+                if (ispj)
+                {
+                    continue;
+                }
+                seller_memo = seller_memo.Replace("UV", "uv");
+                seller_memo = seller_memo.Replace("贡锻布", "贡缎布");
+
+                //吊牌归到卡片
+                seller_memo = seller_memo.Replace("吊牌", "卡片");
+                seller_memo = seller_memo.Replace("卡套", "卡片");
+                seller_memo = seller_memo.Replace("封套", "卡片");
+                seller_memo = seller_memo.Replace("吸管套", "卡片");
+                seller_memo = seller_memo.Replace("腰封", "卡片");
+                seller_memo = seller_memo.Replace("旗帜布", "条幅");
+                seller_memo = seller_memo.Replace("手拉旗", "条幅");
+                seller_memo = seller_memo.Replace("横幅", "条幅");
+                seller_memo = seller_memo.Replace("锦旗", "条幅");
+
+                string map_key = "";
+                string type = "";
+
+                if (supplierMap.ContainsKey(supplierId))
+                {
+                    foreach (var kvp in supplierMap[supplierId])
+                    {
+                        if (seller_memo.Contains(kvp.Key))
+                        {
+                            map_key = kvp.Value;
+                            type = kvp.Value;
+                            break;
+                        }
+                    }
+                }
+                if (map_key == "")
+                {
+
+                    type = ProductName;
+                    map_key = ProductName;
+                    if (smSupplier.Contains(supplierId))
+                    {
+                        type = "数码";
+                        map_key = "数码";
+                    }
+                }
+                if ("其他".Equals(map_key) && suppliers.ContainsKey(supplierId))
+                {
+                    map_key = suppliers[supplierId];
+                }
+
+                map_key += "_" + row["SupplierName"].ToString();
+
+                Dictionary<string, int> map = null;
+
+                if (other_map.ContainsKey(map_key))
+                {
+                    other_map.TryGetValue(map_key, out map);
+                }
+                else
+                {
+                    map = new Dictionary<string, int>();
+                    map.Add("all", 0);//全部
+                    map.Add("unusua", 0);//异常数
+                    map.Add("normal", 0);//正常数
+                    map.Add("noMatch", 0);//未匹配
+                    other_map.Add(map_key, map);
+                    other_map.TryGetValue(map_key, out map);
+                }
+                //处理是否超时
+
+                string finishPlaceTime = row["FinishPlaceTime"].ToString();
+                string sellmer_mome = row["seller_memo"].ToString();
+                string txtCount = row["ProductCount"].ToString();
+                string FinishDeliveryTime = row["FinishDeliveryTime"].ToString();
+
+                map["all"]++;
+                if (string.IsNullOrEmpty(finishPlaceTime))
+                {
+                    map["noMatch"]++;
+                    continue;
+                }
+                if (string.IsNullOrEmpty(FinishDeliveryTime))
+                {
+                    map["noMatch"]++;
+                    continue;
+                }
+                if (!timer_map.ContainsKey(supplierId))
+                {
+                    map["noMatch"]++;
+                    continue;
+                }
+
+                List<CeErpSupplierProductTime> lists = timer_map[supplierId];
+                if (lists.Count > 0)
+                {
+                    bool isComplate = false;
+                    string[] productIds = null;
+                    foreach (CeErpSupplierProductTime ceErpSupplierProductTime in lists)
+                    {
+                        string[] crafts = { };
+                        if (string.IsNullOrEmpty(ceErpSupplierProductTime.productId))
+                        {
+                            continue;
+                        }
+                        if (ceErpSupplierProductTime.quantity > 0)
+                        {
+                            int quantity = commonHelper.handleProductCount(txtCount, true);
+                            //订单数量大于写入的数量则跳过
+                            if (quantity > ceErpSupplierProductTime.quantity)
+                            {
+                                continue;
+                            }
+                        }
+                        productIds = ceErpSupplierProductTime.productId.Split(',');
+                        if (productIds.Contains(productId.ToString()))
+                        {
+                            string textCraft = ceErpSupplierProductTime.craft;
+                            textCraft = textCraft.Replace(",", ",");//统一格式
+                            if (!string.IsNullOrEmpty(textCraft))
+                            {
+                                crafts = textCraft.Split(',');
+                            }
+                            if (crafts.Length > 0)
+                            {
+                                bool isinCraft = false;
+                                for (int i = 0; i < crafts.Length; i++)
+                                {
+                                    if (sellmer_mome.IndexOf(crafts[i]) >= 0)
+                                    {
+                                        isinCraft = true;
+                                        break;
+                                    }
+                                }
+                                //有写工艺并且备注中没匹配中则跳过
+                                if (!isinCraft)
+                                {
+                                    continue;
+                                }
+                            }
+                            DateTime deadLine = DateTime.Parse(ceErpSupplierProductTime.deadLine);
+                            DateTime dayDeadLine = DateTime.Parse(ceErpSupplierProductTime.dayDeadLine);
+
+                            int sendDay = ceErpSupplierProductTime.sendDay;
+
+                            //订单发货时间
+                            DateTime placeTime = DateTime.Parse(finishPlaceTime);
+
+                            DateTime sendtime = DateTime.Now;//预计发货时间
+
+                            DateTime dateTime = DateTime.Parse(FinishDeliveryTime);//实际发货时间
+
+                            //下单时间小于当日发货时间则不用判断
+                            //当日发货必须发货
+                            if (dayDeadLine.Hour > 0 && dayDeadLine.Hour > placeTime.Hour)
+                            {
+                                sendtime = DateTime.Parse(placeTime.ToString("yyyy-MM-dd 23:59:59"));
+                            }
+                            else if (deadLine.Hour > 0 && deadLine.Hour > placeTime.Hour)
+                            {
+                                //在截稿时间之前下单的可以减去一天时间
+                                sendDay = Math.Max(1, sendDay - 1);
+                                sendtime = DateTime.Parse(placeTime.ToString("yyyy-MM-dd 00:00:00")).AddDays(sendDay);
+                            }
+                            else
+                            {
+                                sendDay = Math.Max(1, sendDay - 1);
+                                sendtime = DateTime.Parse(placeTime.ToString("yyyy-MM-dd 23:59:59")).AddDays(sendDay);
+                            }
+                            isComplate = true;
+                            //判断有没有到发货日期大于0还没到发货时间
+                            if (DateTime.Compare(sendtime.Date, dateTime.Date) < 0)
+                            {
+                                //匹配到就不要继续匹配了   
+                                map["unusua"]++;
+                                break;
+                            }
+                            else
+                            {
+                                map["normal"]++;
+                                break;
+                            }
+                        }
+                    }
+                    if (!isComplate)
+                    {
+                        map["noMatch"]++;
+                        continue;
+                    }
+                }
+                else
+                {
+                    map["noMatch"]++;
+                }
+            }
+
+
+            DataTable dt = new DataTable();
+
+            dt.Columns.Add(new DataColumn("ProductName", typeof(string)));
+            dt.Columns.Add(new DataColumn("SupplierName", typeof(string)));
+            dt.Columns.Add(new DataColumn("all", typeof(string)));
+            dt.Columns.Add(new DataColumn("unusua", typeof(string)));
+            dt.Columns.Add(new DataColumn("normal", typeof(string)));
+            dt.Columns.Add(new DataColumn("noMatch", typeof(string)));
+            dt.Columns.Add(new DataColumn("shipmentRate", typeof(string)));
+
+            other_map.Keys.ForEach(key =>
+            {
+                DataRow dr = dt.NewRow();
+
+                Dictionary<string, int> map = other_map[key];
+
+                string[] key_list = key.Split('_');
+                dr[0] = key_list[0];
+                dr[1] = key_list[1];
+                if (key_list.Length > 2)
+                {
+                    dr[1] += "(" + key_list[2] + ")";
+
+                }
+                dr[2] = map["all"];
+                dr[3] = map["unusua"];
+                dr[4] = map["normal"];
+                dr[5] = map["noMatch"];
+                double rate = 0.00;
+                if (map["all"] > 0)
+                {
+                    rate = Math.Round(((Convert.ToDouble(map["normal"]) + Convert.ToDouble(map["noMatch"])) / Convert.ToDouble(map["all"])), 2) * 100;
+                }
+                dr[6] = rate.ToString();
+                dt.Rows.Add(dr);
+            });
+
+            DataView dv = new DataView(dt);
+            dv.Sort = "SupplierName";
+            //dv.Sort = "ProductName desc";
+            DataTable dtNew = dv.ToTable();
+            writeGridDataTableJson(dtNew.Rows.Count, dtNew);
+        }
+
         public void check_order_desing_info()
         {
             string ctid = GetPostString("ctid");

+ 46 - 13
SiteCore/taobao/commonHelper.cs

@@ -484,6 +484,37 @@ namespace SiteCore
             StringBuilder sql = new StringBuilder();
             sql.AppendFormat("select ctid,IsSF,seller_memo,SupplierId,productId,FinishPlaceTime,ProductCount from view_ErpTradeCell where orderstate=6 and unusualTag=0 and FinishPlaceTime is not null  AND DATEDIFF( DAY, FinishPlaceTime, GETDATE( ) ) < 20  and IsXianHuo=0 and IsSample=0 ;");
             DataTable dt = DbHelper.DbConn.ExecuteDataset(sql.ToString()).Tables[0];
+
+            string timer_sql = string.Format("select * from CE_ErpSupplierProductTime");
+            DataTable timer_data = DbHelper.DbConn.ExecuteDataset(timer_sql).Tables[0];
+
+            Dictionary<int, List<CeErpSupplierProductTime>> timer_map = new Dictionary<int, List<CeErpSupplierProductTime>>();
+            foreach (DataRow datarow in timer_data.Rows)
+            {
+                List<CeErpSupplierProductTime> list = null;
+                int supplierId = Convert.ToInt32(datarow["SupplierId"]);
+                if (timer_map.ContainsKey(supplierId))
+                {
+                    timer_map.TryGetValue(supplierId, out list);
+                }
+                else
+                {
+                    list = new List<CeErpSupplierProductTime>();
+                    timer_map.Add(supplierId, list);
+                    timer_map.TryGetValue(supplierId, out list);
+                }
+                CeErpSupplierProductTime ceErpSupplierProductTime = new CeErpSupplierProductTime();
+
+                ceErpSupplierProductTime.quantity = Convert.ToInt32(datarow["quantity"]);
+                ceErpSupplierProductTime.dayDeadLine = datarow["dayDeadLine"].ToString();
+                ceErpSupplierProductTime.deadLine = datarow["deadLine"].ToString();
+                ceErpSupplierProductTime.productId = datarow["productId"].ToString();
+                ceErpSupplierProductTime.craft = datarow["craft"].ToString();
+                ceErpSupplierProductTime.sendDay = Convert.ToInt32(datarow["sendDay"]);
+                list.Add(ceErpSupplierProductTime);
+
+            }
+
             List<string> tLst = new List<string>();
             if (dt != null && dt.Rows.Count > 0)
             {
@@ -498,15 +529,17 @@ namespace SiteCore
                         {
                             continue;
                         }
-                        StringBuilder timerSql = new StringBuilder();
-                        timerSql.AppendFormat("SELECT * FROM CE_ErpSupplierProductTime WHERE supplierId={0} order by quantity", supplierId);
-                        DataTable timerTable = DbHelper.DbConn.ExecuteDataset(timerSql.ToString()).Tables[0];
+
                         //没配置时间
-                        if (timerTable == null || timerTable.Rows.Count == 0)
+                        if (!timer_map.ContainsKey(supplierId))
+                        {
+                            continue;
+                        }
+                        List<CeErpSupplierProductTime> timmerList = timer_map[supplierId];
+                        if (timmerList.Count == 0)
                         {
                             continue;
                         }
-
                         string[] productIds = null;
                         string finishPlaceTime = row["FinishPlaceTime"].ToString();
                         string sellmer_mome = row["seller_memo"].ToString();
@@ -518,11 +551,11 @@ namespace SiteCore
                             continue;
                         }
                         placeTime = DateTime.Parse(finishPlaceTime);
-                        foreach (DataRow dr in timerTable.Rows)
+                        foreach (CeErpSupplierProductTime productTime in timmerList)
                         {
-                            string txtIds = dr["productId"].ToString();
+                            string txtIds = productTime.productId;
                             string[] crafts = { };
-                            int count = Convert.ToUInt16(dr["quantity"]);
+                            int count = productTime.quantity;
                             if (string.IsNullOrEmpty(txtIds))
                             {
                                 continue;
@@ -539,7 +572,7 @@ namespace SiteCore
                             productIds = txtIds.Split(',');
                             if (productIds.Contains(productId.ToString()))
                             {
-                                string textCraft = dr["craft"].ToString();
+                                string textCraft = productTime.craft;
                                 textCraft = textCraft.Replace(",", ",");//统一格式
                                 if (!string.IsNullOrEmpty(textCraft))
                                 {
@@ -562,10 +595,10 @@ namespace SiteCore
                                         continue;
                                     }
                                 }
-                                DateTime deadLine = DateTime.Parse(dr["deadLine"].ToString());
-                                DateTime dayDeadLine = DateTime.Parse(dr["dayDeadLine"].ToString());
+                                DateTime deadLine = DateTime.Parse(productTime.deadLine);
+                                DateTime dayDeadLine = DateTime.Parse(productTime.dayDeadLine);
 
-                                int sendDay = Convert.ToInt16(dr["sendDay"]);
+                                int sendDay = productTime.sendDay;
 
                                 //订单发货时间
                                 DateTime sendtime = placeTime;
@@ -3403,7 +3436,7 @@ namespace SiteCore
         static List<string> ExtractUnitsOnly(string text)
         {
             List<string> units = new List<string>();
-            string pattern = @"(cm|mm)";
+            string pattern = @"(cm|mm|m)";
 
             foreach (Match match in Regex.Matches(text, pattern))
             {

+ 5 - 1
Web/EAfterSale/js/Handling.js

@@ -536,6 +536,10 @@ function saveHandleFn() {
         mini.alert("售后原因请选择详细一点");
         return;
     }
+    if (mini.get("txtReason1").getText() == "车间责任" && mini.get("txtReason2").getText() == "发货问题" && mini.get("txtReason3").getText() == "少款数、少数量" && mini.get("txtReason4").getText() == "少数量" && $("#txtInputReason").val() == "") {
+        mini.alert("售后原因请选择详细一点");
+        return;
+    }
 
     parms.AfterSaleReason = mini.get("txtReason1").getText() + "|" + mini.get("txtReason2").getText() + "|" + mini.get("txtReason3").getText() + "|" + mini.get("txtReason4").getText();
     parms.supplierResponsible = "";
@@ -1399,7 +1403,7 @@ function changeSupplierReason4Fn(e) {
 function showTxtInputReason() {
     let text = mini.get("txtReason4").getText();
     $("#txtInputReason").hide();
-    if (mini.get("txtReason1").getText() == "车间责任" && (text == "少款数" || text == "少数量" || text == "漏发" || text == "少发(包含产品多做配件少发)")) {
+    if (mini.get("txtReason1").getText() == "车间责任" && (text == "少款数" || text == "少数量" || text == "漏发" || text == "少发" || text == "少发(包含产品多做配件少发)")) {
         $("#txtInputReason").val("");
         $("#txtInputReason").show();
     }

+ 44 - 22
Web/ECharts/PlaceGather.aspx

@@ -13,6 +13,9 @@
             mini.get("supplier_grid").load({
                 date1: s.placedate1, date2: s.placedate2
             });
+            mini.get("supplier_all_grid").load({
+                date1: s.placedate1, date2: s.placedate2
+            });
         }
 
         function exportAfterFn(id) {
@@ -266,34 +269,53 @@
     </script>
 </asp:Content>
 <asp:Content ID="Content2" ContentPlaceHolderID="btn" runat="Server">
-    <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportAfterFn('supplier_grid')">导出</a>
 </asp:Content>
 <asp:Content ID="Content4" ContentPlaceHolderID="content" runat="Server">
     <div class="mini-fit">
-        <div id="supplier_grid" class="mini-datagrid" sortmode="client" style="width: 100%; height: 50%;" showemptytext="true" showpager="false" showsummaryrow="false" ondrawsummarycell="onDrawSummaryCell"
-            emptytext="暂无记录" url="../handler/sync.ashx?t=get_place_order_data">
-            <div property="columns">
-                <div field="ProductName" width="160" align="center" headeralign="center">品类</div>
-                <div field="SupplierName" width="160" align="center" headeralign="center">车间</div>
-                <div field="dayDev" width="160" align="center" headeralign="center">当天出货的下单数量</div>
-                <div field="dayTotal" width="160" align="center" headeralign="center">当天下单总数量</div>
-                <div field="payTotal" width="160" align="center" headeralign="center">金额5百以上单量</div>
-                <div field="today" width="160" align="center" headeralign="center">当天出货</div>
-                <div field="aftersale" width="160" align="center" headeralign="center">售后单</div>
-                <div field="deliveryNum" width="160" align="center" headeralign="center">待发货单</div>
-                <div field="unusua" width="160" align="center" headeralign="center">异常单</div>
-                <div field="unusua_reson" width="160" visible="false" align="center" headeralign="center">异常原因</div>
+        <div id="supplier_grid_panel" class="mini-panel mini-panel-info" style="width: 100%; height: 50%; padding: 0px; margin: 10px 0;">
+            <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportAfterFn('supplier_grid')">导出</a>
+            <div id="supplier_grid" class="mini-datagrid" sortmode="client" style="width: 100%; height: 100%;" showemptytext="true" showpager="false" showsummaryrow="false" ondrawsummarycell="onDrawSummaryCell"
+                emptytext="暂无记录" url="../handler/sync.ashx?t=get_place_order_data">
+                <div property="columns">
+                    <div field="ProductName" width="160" align="center" headeralign="center">品类</div>
+                    <div field="SupplierName" width="160" align="center" headeralign="center">车间</div>
+                    <div field="dayDev" width="160" align="center" headeralign="center">当天出货的下单数量</div>
+                    <div field="dayTotal" width="160" align="center" headeralign="center">当天下单总数量</div>
+                    <div field="payTotal" width="160" align="center" headeralign="center">金额5百以上单量</div>
+                    <div field="today" width="160" align="center" headeralign="center">当天出货</div>
+                    <div field="aftersale" width="160" align="center" headeralign="center">售后单</div>
+                    <div field="deliveryNum" width="160" align="center" headeralign="center">待发货单</div>
+                    <div field="unusua" width="160" align="center" headeralign="center">异常单</div>
+                    <div field="unusua_reson" width="160" visible="false" align="center" headeralign="center">异常原因</div>
+                </div>
+            </div>
+        </div>
+        <div id="supplier_all_grid_panel" class="mini-panel mini-panel-info" style="width: 100%; height: 50%; padding: 0px; margin: 10px 0">
+            <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportAfterFn('supplier_all_grid')">导出</a>
+            <div id="supplier_all_grid" class="mini-datagrid" sortmode="client" style="width: 100%; height: 100%;" showemptytext="true" showpager="false" showsummaryrow="false" ondrawsummarycell="onDrawSummaryCell"
+                emptytext="暂无记录" url="../handler/sync.ashx?t=get_place_all_order_data">
+                <div property="columns">
+                    <div field="ProductName" width="160" align="center" headeralign="center">品类</div>
+                    <div field="SupplierName" width="160" align="center" headeralign="center">车间</div>
+                    <div field="all" width="160" align="center" headeralign="center">全部</div>
+                    <div field="unusua" width="160" align="center" headeralign="center">异常单</div>
+                    <div field="normal" width="160" align="center" headeralign="center">正常单</div>
+                    <div field="noMatch" width="160" align="center" headeralign="center">未匹配单</div>
+                    <div field="shipmentRate" width="160" align="center" headeralign="center">出货率</div>
+                </div>
             </div>
         </div>
-         <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportFn()">导出</a>
-        <div id="m_grid" class="mini-datagrid" sortmode="client" style="width: 100%; height: 50%;" showemptytext="true" showpager="false" showsummaryrow="false" ondrawsummarycell="onDrawSummaryCell"
-            emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_place_gather">
-            <div property="columns">
-                <div type="indexcolumn" width="20"></div>
-                <div type="checkcolumn" width="20"></div>
-                <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 id="m_grid_panel" class="mini-panel mini-panel-info" style="width: 100%; height: 50%; padding: 0px; margin: 10px 0">
+            <a class="mini-button mini-button-primary" iconcls="icon-folder" onclick="exportFn()">导出</a>
+            <div id="m_grid" class="mini-datagrid" sortmode="client" style="width: 100%; height: 100%;" showemptytext="true" showpager="false" showsummaryrow="false" ondrawsummarycell="onDrawSummaryCell"
+                emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_place_gather">
+                <div property="columns">
+                    <div type="indexcolumn" width="20"></div>
+                    <div type="checkcolumn" width="20"></div>
+                    <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>
             </div>
         </div>
     </div>

+ 1 - 0
ecomServer/MainForm.cs

@@ -126,6 +126,7 @@ namespace ErpServer
                                  typeof(CeErpInvoice),
                                  typeof(CeErpTradeSpu),
                                  typeof(CeErpSukuraData),
+                                 typeof(CeErpSupplierProductTime),
                                  typeof(CeErpTradeAfterSaleLog)
 
                              };