浏览代码

客诉修改
拆分订单完成

wangxiaoming 6 年之前
父节点
当前提交
ab07792b4e

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrderItem.java

@@ -32,6 +32,8 @@ public class SalesOrderItem implements Serializable {
 
     private Integer colorIsMachine; //是否是水机 1:水机 2;其它产品
 
+    private String salesDealCode;   //交易号
+
     public Integer getItemIsSource() {
         return itemIsSource;
     }
@@ -175,4 +177,12 @@ public class SalesOrderItem implements Serializable {
     public void setColorIsMachine(Integer colorIsMachine) {
         this.colorIsMachine = colorIsMachine;
     }
+
+    public String getSalesDealCode() {
+        return salesDealCode;
+    }
+
+    public void setSalesDealCode(String salesDealCode) {
+        this.salesDealCode = salesDealCode;
+    }
 }

+ 8 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -417,4 +417,12 @@ public interface SalesOrderService {
      * @return
      */
     List<SalesOrder> salesOrderAndItemStat(SalesOrder salesOrder);
+
+    /**
+     * 拆单
+     * @param mainOrderId
+     * @param salesOrderList
+     * @return
+     */
+    Integer splitOrder(String mainOrderId, List<SalesOrder> salesOrderList);
 }

+ 0 - 19
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -504,16 +504,6 @@ public class CustomerServiceImpl implements CustomerService {
     @Transactional
     public void setName(CmRelation cr) {
         for (int i=0;i<cr.getSendProdcues().size();i++) {
-            if("123456".equals(cr.getSendProdcues().get(i).getColorBar())){
-                continue;
-            }
-            if("6970465730030".equals(cr.getSendProdcues().get(i).getColorBar())){
-                continue;
-            }
-            if("6970465730023".equals(cr.getSendProdcues().get(i).getColorBar())){
-                continue;
-            }
-
             ProductColor productColor = productMapper.getProductBySku(cr.getSendProdcues().get(i).getColorBar());
             cr.getSendProdcues().get(i).setProductColor(productColor);
             cr.getSendProdcues().get(i).setColorId(productColor.getColorId());
@@ -524,15 +514,6 @@ public class CustomerServiceImpl implements CustomerService {
             cr.getSendProdcues().get(i).setProductNumber(product.getProductNumber());
         }
         for (int i=0;i<cr.getClosedProdcues().size();i++) {
-            if(("123456").equals(cr.getClosedProdcues().get(i).getColorBar())){
-                continue;
-            }
-            if(("6970465730030").equals(cr.getClosedProdcues().get(i).getColorBar())){
-                continue;
-            }
-            if(("6970465730023").equals(cr.getClosedProdcues().get(i).getColorBar())){
-                continue;
-            }
             ProductColor productColor = productMapper.getProductBySku(cr.getClosedProdcues().get(i).getColorBar());
             cr.getClosedProdcues().get(i).setProductColor(productColor);
             cr.getClosedProdcues().get(i).setColorId(productColor.getColorId());

+ 79 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -20,6 +20,7 @@ import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper;
 import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
 import com.iamberry.rst.service.order.mapper.LogisticsInfoMapper;
 import com.iamberry.rst.service.order.mapper.ProvincesLogisticsMapper;
+import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
 import com.iamberry.rst.util.PageUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
@@ -61,6 +62,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     private AddressService addressService;
     @Autowired
     private ProvincesLogisticsMapper provincesLogisticsMapper;
+    @Autowired
+    private ProductMapper productMapper;
 
 
     @Override
@@ -1098,8 +1101,84 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrderMapper.listOrderWarehouse();
     }
 
+    @Transactional
     @Override
     public List<SalesOrder> salesOrderAndItemStat(SalesOrder salesOrder) {
         return salesOrderMapper.salesOrderAndItemStat(salesOrder);
     }
+
+    @Transactional
+    @Override
+    public Integer splitOrder(String mainOrderId, List<SalesOrder> salesOrderList) {
+        Integer flag = 0;
+
+        SalesOrder mainOrder = new SalesOrder();
+        mainOrder.setSalesDealCode(mainOrderId);
+        List<SalesOrder> orderList = salesOrderService.salesOrderListAndItem(mainOrder);
+        SalesOrder or = new SalesOrder();
+        or.setSalesMainOrderId(orderList.get(0).getSalesId());
+        //该订单为主订单
+        List<SalesOrder> sonSalesOrderList = salesOrderService.salesOrderListAndItem(or);
+        orderList.addAll(sonSalesOrderList);
+
+        for (SalesOrder salesOrder:salesOrderList) {
+
+            for (int j=0;j<orderList.size();j++){
+                if(salesOrder.getSalesDealCode().equals(orderList.get(j).getSalesDealCode())){
+                    orderList.remove(j);
+                }
+            }
+
+            if(salesOrder.getSalesId() != null && salesOrder.getSalesShippingStatus() > 0){
+                continue;
+            }
+            //create order item
+            for (SalesOrderItem itemSaleItem:salesOrder.getSalesOrderItemList()) {
+                ProductColor productColor = productMapper.getProductBySku(itemSaleItem.getItemColorBar());
+                itemSaleItem.setItemProductId(productColor.getColorProductId());
+                itemSaleItem.setItemProductColor(productColor.getColorName());
+                itemSaleItem.setColorAbbreviation(productColor.getColorAbbreviation());
+                itemSaleItem.setProductAbbreviation(productColor.getColorAbbreviation());
+                itemSaleItem.setItemIsSource(1);
+                itemSaleItem.setItemProductDiscount(productColor.getColorDiscount());
+                itemSaleItem.setItemProductPrice(productColor.getColorPrice());
+                itemSaleItem.setItemProductPic(productColor.getColorPicture());
+                itemSaleItem.setItemProductName(productColor.getProductName());
+                itemSaleItem.setItemProductType(productColor.getProductType());
+                itemSaleItem.setItemColorId(productColor.getColorId());
+                if(salesOrder.getSalesId() != null){
+                    itemSaleItem.setItemOrderId(salesOrder.getSalesId());
+                }
+            }
+
+            Integer salesId = salesOrder.getSalesId();
+            if(salesId == null){
+                //添加订单和订单项
+                salesOrderService.addOrderAndIteminfo(salesOrder,salesOrder.getSalesOrderItemList());
+            }else{
+                //其余全部做修改,删除订单项,添加新的订单项
+                 flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
+                if(flag < 1){
+                    throw new RuntimeException("删除订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
+                }
+
+                flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
+                if(flag < 1){
+                    throw new RuntimeException("添加订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
+                }
+            }
+        }
+
+        for (SalesOrder soDelete:orderList) {
+            flag = salesOrderService.delSalesOrder(soDelete.getSalesId());
+            if(flag < 1){
+                throw new RuntimeException("删除订单失败,删除订单交易号:"+soDelete.getSalesDealCode());
+            }
+        }
+
+        return flag;
+    }
+
+
+
 }

+ 5 - 3
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml

@@ -237,11 +237,13 @@
     <!--根据sku查询配件信息 -->
     <select id="getProductBySku" resultType="ProductColor" parameterType="String">
         SELECT
-        *
+            pc.*,
+            pi.*
         FROM
-        tb_rst_product_color
+            tb_rst_product_color pc
+        LEFT JOIN tb_rst_product_info pi ON pc.color_product_id = pi.product_id
         WHERE
-        color_bar = #{colorBar}
+        pc.color_bar = #{colorBar}
     </select>
 
     <select id="getColorByBar" parameterType="String"  resultType="ProductColor">

+ 99 - 12
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -29,6 +29,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.xpath.operations.Bool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -1213,9 +1214,9 @@ public class AdminSalesOrderController {
      * @return
      * @throws Exception
      */
-    @RequestMapping("/split_order")
+    @RequestMapping("/to_split_order")
     @RequiresPermissions("salesOrder:split:salesOrder")
-    public ModelAndView splitOrder(HttpServletRequest request) throws Exception {
+    public ModelAndView toSplitOrder(HttpServletRequest request) throws Exception {
         ModelAndView mv = new ModelAndView("order/salesOrder/sales_order_split");
         String salesId = request.getParameter("salesId");
         if (!StringUtils.isNotEmpty(salesId)) {
@@ -1234,10 +1235,9 @@ public class AdminSalesOrderController {
             or.setSalesId(order.getSalesMainOrderId());
             //该订单为主订单
             orderList = salesOrderService.salesOrderListAndItem(or);
-            if (orderList == null || orderList.size() == 0) {
-                return mv;
+            if (orderList != null && orderList.size() > 0) {
+                order = orderList.get(0);
             }
-            order = orderList.get(0);
         }
 
         //查询副订单,以及订单项信息
@@ -1248,20 +1248,24 @@ public class AdminSalesOrderController {
 
         //合并产品项-- 所有产品项
         List<SalesOrderItem> salesOrderItemList = new ArrayList<>();
-        salesOrderItemList.addAll(order.getSalesOrderItemList());
+        for (SalesOrderItem so:order.getSalesOrderItemList()) {
+            SalesOrderItem itemSo = new SalesOrderItem();
+            BeanUtils.copyProperties(so,itemSo);
+            salesOrderItemList.add(itemSo);
+        }
         for(SalesOrder sor : viceOrList){
             for (SalesOrderItem soim:sor.getSalesOrderItemList()) {
-
+                SalesOrderItem itemSi2One = new SalesOrderItem();
+                BeanUtils.copyProperties(soim,itemSi2One);
                 boolean flag = false;
                 for (SalesOrderItem soi: salesOrderItemList) {
-                    if(soim.getItemColorBar().equals(soi.getItemColorBar())){
-                        soi.setItemNum(soi.getItemNum()+soim.getItemNum());
-                    }else{
+                    if(itemSi2One.getItemColorBar().equals(soi.getItemColorBar())){
+                        soi.setItemNum(soi.getItemNum()+itemSi2One.getItemNum());
                         flag = true;
                     }
                 }
-                if(flag){
-                    salesOrderItemList.add(soim);
+                if(!flag){
+                    salesOrderItemList.add(itemSi2One);
                 }
 
             }
@@ -1284,5 +1288,88 @@ public class AdminSalesOrderController {
         return mv;
     }
 
+    /**
+     *
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/split_order")
+    @RequiresPermissions("salesOrder:split:salesOrder")
+    public ResponseJson splitOrder(HttpServletRequest request,String mainOrderId,String orderItemJson){
+        ResponseJson responseJson = ResponseJson.getSUCCESS();
+        if(mainOrderId == null || "".equals(mainOrderId)){
+            responseJson.setResultMsg("主订单交易号为空!");
+            return responseJson;
+        }
+
+        //判断主订单信息
+        boolean fl = true;
+        JSONArray jsonArray = JSONArray.fromObject(orderItemJson);
+        List<SalesOrderItem> salesOrderItemList = (List<SalesOrderItem>) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
+        for (SalesOrderItem salesOrderItem:salesOrderItemList) {
+            if(mainOrderId.equals(salesOrderItem.getSalesDealCode())){
+                if(salesOrderItem.getItemColorBar() == null || "".equals(salesOrderItem.getItemColorBar()) ){
+                    fl = false;
+                }
+            }
+        }
+        if(!fl){
+            responseJson.setResultMsg("主订单没有产品!");
+            return responseJson;
+        }
+
+        SalesOrder mainOrder = new SalesOrder();
+        mainOrder.setSalesDealCode(mainOrderId);
+        List<SalesOrder> orderList = salesOrderService.salesOrderListAndItem(mainOrder);
+        SalesOrder or = orderList.get(0);
+
+        List<SalesOrder> salesOrderList = new ArrayList<>();
+        for (SalesOrderItem salesOrderItem:salesOrderItemList) {
+            SalesOrder salesOrder = new SalesOrder();
+            salesOrder.setSalesDealCode(salesOrderItem.getSalesDealCode());
+            List<SalesOrder>  getSalesOrderList = salesOrderService.salesOrderListAndItem(salesOrder);
+            SalesOrder getSalesOrder = new SalesOrder();
+            if(getSalesOrderList == null || getSalesOrderList.size() < 1){
+                BeanUtils.copyProperties(or,getSalesOrder);
+                getSalesOrder.setSalesDealCode(salesOrderItem.getSalesDealCode());
+                getSalesOrder.setSalesId(null);
+                getSalesOrder.setSalesMainOrderId(or.getSalesId());
+            }else{
+               getSalesOrder = getSalesOrderList.get(0);
+            }
+
+            boolean isHasOrder = false;
+            for (SalesOrder so:salesOrderList) {
+                if(so.getSalesDealCode().equals(getSalesOrder.getSalesDealCode())){
+                    //相同的合并订单项
+                    so.getSalesOrderItemList().add(salesOrderItem);
+                    isHasOrder = true;
+                }
+            }
+            if(!isHasOrder){
+                List<SalesOrderItem> soi = new ArrayList<>();
+                soi.add(salesOrderItem);
+                getSalesOrder.setSalesOrderItemList(soi);
+
+                SalesOrder newOrder = new SalesOrder();
+                BeanUtils.copyProperties(getSalesOrder,newOrder);
+                salesOrderList.add(newOrder);
+            }
+        }
+
+        try {
+            Integer flag = salesOrderService.splitOrder(mainOrderId,salesOrderList);
+            if(flag < 1){
+                responseJson.setResultMsg("拆单订单失败!");
+                return responseJson;
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            responseJson.setResultMsg("拆单订单失败!");
+            return responseJson;
+        }
+        return ResponseJson.getSUCCESS();
+    }
 
 }

+ 2 - 14
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl

@@ -435,7 +435,7 @@
                     <input type="text" class="input-text" value="" placeholder="填写收件人姓名" id="sendName" name="relationSendName"  errormsg="联系人格式不正确!" >
                 </div>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" errormsg="联系人电话格式不正确!">
+                    <input type="text" class="input-text" value="" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="" errormsg="联系人电话格式不正确!">
                 </div>
                 <div class="formControls col-2 col-sm-2"  id="postageAccount">
                     <input type="text" class="input-text" value="" placeholder="邮费转账 支付宝账户" id="relationAlipay" name="relationAlipay" errormsg="邮费转账账户!">
@@ -772,6 +772,7 @@
     /*加载TDS地址信息*/
     var addressUlc = init_address($(".init_address"));
 
+//    var ulcRelationAddress = init_address($(".relation_address"));
     var ulcRelationAddress = init_address($(".relation_address"));
 
     /*是否是修改页面*/
@@ -859,19 +860,6 @@
             selectOrder();
         });
 
-        /*监听省选择事件*/
-        $(document).on('change', '#province', function() {
-            var proId = $("#province").val();
-            var cityId = setCity("",proId,2)
-            setDistrict("",cityId,2)
-        });
-
-        /*监听市选择事件*/
-        $(document).on('change', '#city', function() {
-            var city = $("#city").val();
-            setDistrict("",city,2)
-        });
-
         /*监听回访类型选择事件  是否需要回访  1:不需要回访  2:需要回复  */
 //        initVisitEvent();
 

+ 1 - 14
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_customer.ftl

@@ -450,7 +450,7 @@
                     <input type="text" class="input-text" value="${cmRelation.relationSendName!''}" placeholder="填写收件人姓名" id="sendName" name="relationSendName" errormsg="联系人格式不正确!" >
                 </div>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="${cmRelation.relationSendTel!''}" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" errormsg="联系人电话格式不正确!">
+                    <input type="text" class="input-text" value="${cmRelation.relationSendTel!''}" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="" errormsg="联系人电话格式不正确!">
                 </div>
                 <div class="formControls col-2 col-sm-2"  id="postageAccount">
                     <input type="text" class="input-text" value="${cmRelation.relationAlipay!''}" placeholder="邮费转账 支付宝账户" id="relationAlipay" name="relationAlipay" errormsg="邮费转账账户!">
@@ -921,19 +921,6 @@
             selectOrder();
         });
 
-        /*监听省选择事件*/
-        $(document).on('change', '#province', function() {
-            var proId = $("#province").val();
-            var cityId = setCity("",proId,2)
-            setDistrict("",cityId,2)
-        });
-
-        /*监听市选择事件*/
-        $(document).on('change', '#city', function() {
-            var city = $("#city").val();
-            setDistrict("",city,2)
-        });
-
         /*监听回访类型选择事件  是否需要回访  1:不需要回访  2:需要回复  */
        initVisitEvent();
 

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl

@@ -390,8 +390,8 @@
 
    /*拆分订单*/
     function split_order(orderSaleId){
-        window.location.href= "${path}/admin/salesOrder/split_order?salesId="+orderSaleId;
-        <#--layer_show("拆分订单","${path}/admin/salesOrder/split_order?salesId="+orderSaleId,800,600);-->
+        window.location.href= "${path}/admin/salesOrder/to_split_order?salesId="+orderSaleId;
+        <#--layer_show("拆分订单","${path}/admin/salesOrder/to_split_order?salesId="+orderSaleId,800,600);-->
     }
 
     

+ 437 - 82
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_split.ftl

@@ -67,8 +67,9 @@
 
 <article class="cl pd-20">
     <form action="" method="post" class="form form-horizontal" id="form-article-add">
+        <input type="hidden" name="salesId" value="${order.salesId!''}" >
 
-        <div class="row cl">
+        <#--<div class="row cl">
             <label class="form-label col-3">
                 <div class="tit-2">
                     用户信息
@@ -94,7 +95,7 @@
                 <td width="210" colspan="4" style="font-weight: normal;"><span>${order.salesUserRemark!''}</span></td>
             </tr>
             </thead>
-        </table>
+        </table>-->
 
         <div class="row cl">
             <label class="form-label col-3">
@@ -107,16 +108,23 @@
         <table class="table table-border table-bg table-bordered" style="margin-top: 10px;">
             <thead>
             <tr>
+                <#--<th width="20">订单编号:</th>
+                <td width="70" style="font-weight: normal;"><span>${order.salesOrderId!'暂无订单编号'}</span></td>-->
+                <th width="20">交易号:</th>
+                <td width="70" style="font-weight: normal;"><span>${order.salesDealCode!''}</span></td>
                 <th width="20">批次号:</th>
                 <td width="70" style="font-weight: normal;"><span>${order.salesBatchId!'暂无批次'}</span></td>
-                <th width="20">下单日期:</th>
-                <td width="70" style="font-weight: normal;"><span>${(order.batchCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</span></td>
             </tr>
             <tr>
-                <th width="20">订单编号:</th>
-                <td width="70" style="font-weight: normal;"><span>${order.salesOrderId!'暂无订单编号'}</span></td>
-                <th width="20">交易号:</th>
-                <td width="70" style="font-weight: normal;"><span>${order.salesDealCode!''}</span></td>
+                <th width="20">收货人姓名:</th>
+                <td width="70" style="font-weight: normal;"><span>${order.salesAddressName!''}</span></td>
+                <th width="20">手机号码:</th>
+                <td width="70" style="font-weight: normal;"><span>${order.salesAddressTel!''}</span></td>
+            </tr>
+           <#-- <tr>
+
+                <th width="20">下单日期:</th>
+                <td width="70" style="font-weight: normal;"><span>${(order.batchCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</span></td>
             </tr>
             <tr>
                 <th width="20">销售公司:</th>
@@ -159,11 +167,11 @@
 
                 <th width="20"></th>
                 <td width="70" style="font-weight: normal;"><span></span></td>
-            </tr>
+            </tr>-->
             </thead>
         </table>
 
-        <div class="row cl">
+       <#-- <div class="row cl">
             <label class="form-label col-3">
                 <div class="tit-2">
                     发货信息
@@ -203,9 +211,9 @@
                 </span></td>
             </tr>
             </thead>
-        </table>
+        </table>-->
 
-        <div class="row cl">
+        <#--<div class="row cl">
             <label class="form-label col-3">
                 <div class="tit-2">
                     后台信息
@@ -221,12 +229,12 @@
                 <td>${order.salesAdminRemark!'暂无后台信息'}</td>
             </tr>
             </thead>
-        </table>
+        </table>-->
 
         <div class="row cl">
             <label class="form-label col-3">
                 <div class="tit-2">
-                    购买产品
+                    所有产品
                 </div>
             </label>
             <div class="formControls col-10 col-sm-10">
@@ -234,26 +242,34 @@
         </div>
             <#--<label class="form-label col-2 col-sm-2">购买产品信息:</label>-->
                 <table class="table table-border table-bg table-bordered" style="margin-top: 10px;">
-                    <tr class="text-c">
-                        <th>产品名称</th>
-                        <th>产品颜色</th>
-                        <th>产品数量</th>
-                    </tr>
-                    <#if salesOrderItemList?? &&  (salesOrderItemList?size > 0) >
-                        <#list salesOrderItemList as item>
-                            <tr class="text-c">
-                                <td>${item.itemProductName!''}</td>
-                                <td>${item.itemProductColor!''}</td>
-                                <td>${item.itemNum}</td>
-                            </tr>
-                        </#list>
-                    </#if>
+                    <thead>
+                        <tr class="text-c">
+                            <th>产品名称</th>
+                            <th>产品颜色</th>
+                            <th>产品编号</th>
+                            <th>原产品总数量</th>
+                            <th>现产品总数量</th>
+                        </tr>
+                    </thead>
+                    <tbody id="productStatistics">
+                        <#if salesOrderItemList?? &&  (salesOrderItemList?size > 0) >
+                            <#list salesOrderItemList as item>
+                                <tr class="text-c">
+                                    <td>${item.itemProductName!''}</td>
+                                    <td>${item.itemProductColor!''}</td>
+                                    <td>${item.itemColorBar!''}</td>
+                                    <td>${item.itemNum!'0'}</td>
+                                    <td style="color: #c00">${item.itemNum!'0'}</td>
+                                </tr>
+                            </#list>
+                        </#if>
+                    </tbody>
                 </table>
 
             <div class="row cl">
                 <label class="form-label col-3">
                     <div class="tit-2">
-                        已拆的单
+                        当前订单项
                     </div>
                 </label>
                 <div class="formControls col-10 col-sm-10">
@@ -267,30 +283,49 @@
                     <th width="20">颜色</th>
                     <th width="100">产品编号</th>
                     <th width="10">产品数量</th>
-                    <th width="50">操作</th>
+                    <th width="50">修改/删除</th>
+                    <th width="50">添加</th>
                 </tr>
             </thead>
             <tbody id="allDay">
 
                 <#list order.salesOrderItemList as orderItem>
-                    <tr class="text-c">
-                        <td msg="${order.salesDealCode!''}">${order.salesDealCode!''}(主订单)</td>
+                    <tr class="text-c ${order.salesDealCode!''}">
+                        <td msg="${order.salesDealCode!''}">
+                            ${order.salesDealCode!''}(主订单)
+                                <input type="hidden" class="salesShippingStatus" value="${order.salesShippingStatus!"0"}" >
+                            <#if order.salesShippingStatus != 0>
+                                <#if order.salesShippingStatus == 11>
+                                    (已通知配货)
+                                <#elseif order.salesShippingStatus == 1>
+                                    (已发货)
+                                </#if>
+                            </#if>
+                        </td>
                         <td>${orderItem.itemProductName}</td>
                         <td>${orderItem.itemProductColor}</td>
-                        <td>${orderItem.itemColorBar}</td>
-                        <td><input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1)" onpaste="keyFun($(this),999,1)"></td>
+                        <td class="itemColorBar">${orderItem.itemColorBar}</td>
+                        <td>
+                            <#if order.salesShippingStatus == 0>
+                                <input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()">
+                            <#else>
+                                <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()" disabled="disabled">
+                            </#if>
+                        </td>
                         <td msg="${order.salesDealCode!''}">
-                            <a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>
+                            <#if order.salesShippingStatus == 0>
+                                <a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>&nbsp;
+                                <a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>
+                            <#else>
+                                -
+                            </#if>
                         </td>
-                    </tr>
-                    <tr class="text-c">
-                        <td msg="${order.salesDealCode!''}"></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td msg="${order.salesDealCode+1!''}">
-                            <a href="javascript:void(0)" onclick="addOrderItem(this)">添加</a>
+                        <td msg="${order.salesDealCode!''}">
+                            <#if order.salesShippingStatus == 0>
+                                <a href="javascript:void(0)" onclick="addOrderItem(this)">添加</a>
+                            <#else>
+                                -
+                            </#if>
                         </td>
                     </tr>
                 </#list>
@@ -298,78 +333,341 @@
                 <#if viceOrList?? &&  (viceOrList?size > 0) >
                     <#list viceOrList as viceOr>
                         <#list viceOr.salesOrderItemList as orderItem>
-                            <tr class="text-c">
-                                <td msg="${viceOr.salesDealCode!''}">${viceOr.salesDealCode!''}</td>
+                            <tr class="text-c ${viceOr.salesDealCode!''}">
+                                <td msg="${viceOr.salesDealCode!''}">
+                                    ${viceOr.salesDealCode!''}
+                                        <input type="hidden" class="salesShippingStatus" value="${viceOr.salesShippingStatus!"0"}" >
+                                    <#if viceOr.salesShippingStatus != 0>
+                                        <#if viceOr.salesShippingStatus == 11>
+                                            已通知配货
+                                        <#elseif viceOr.salesShippingStatus == 1>
+                                            已发货
+                                        </#if>
+                                    </#if>
+                                </td>
                                 <td>${orderItem.itemProductName}</td>
                                 <td>${orderItem.itemProductColor}</td>
-                                <td>${orderItem.itemColorBar}</td>
-                                <td><input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1)" onpaste="keyFun($(this),999,1)"></td>
+                                <td class="itemColorBar">${orderItem.itemColorBar}</td>
+                                <td>
+                                    <#if viceOr.salesShippingStatus == 0>
+                                        <input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()">
+                                    <#else>
+                                        <input type="text" style="width: 100%;text-align: center;border: none" class="input-text input-number input-itemNum" value="${orderItem.itemNum!"0"}"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()" disabled="disabled">
+                                    </#if>
+                                </td>
                                 <td msg="${viceOr.salesDealCode!''}">
-                                    <a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>
-                                    <a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>
+                                    <#if viceOr.salesShippingStatus == 0>
+                                        <a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>&nbsp;
+                                        <a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>
+                                    <#else>
+                                        -
+                                    </#if>
+                                </td>
+                                <td msg="${order.salesDealCode!''}-${viceOr_index+1}">
+                                    <#if viceOr.salesShippingStatus == 0>
+                                        <a href="javascript:void(0)" onclick="addOrderItem(this)">添加</a>
+                                    <#else>
+                                        -
+                                    </#if>
                                 </td>
                             </tr>
                         </#list>
-                        <tr class="text-c">
-                            <td msg="${viceOr.salesDealCode!''}"></td>
-                            <td></td>
-                            <td></td>
-                            <td></td>
-                            <td></td>
-                            <td msg="${viceOr.salesDealCode!''}">
-                                <a href="javascript:void(0)" onclick="addOrderItem(this)">添加</a>
-                            </td>
-                        </tr>
                     </#list>
                 </#if>
             </tbody>
+            <div style="color: #c00;" >*已通知配货/已发货的订单不能进行更改</div>
         </table>
+        <button type="button" style=" margin-top: 10px; float: right;" class="btn btn-primary" onclick="addOrder()" >添加拆单</button>
+
+        <div class="row cl" style="margin-top: 50px;margin-bottom: 20px">
+            <div class="col-2 col-sm-2 col-offset-5">
+                <button class="btn btn-block btn-primary size-XL" type="button" onclick="submitSplitOrder()">保存拆单</button>
+            </div>
+        </div>
 
     </form>
     </div>
 </article>
-<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
-<script type="text/javascript" src="${path}/common/lib/webuploader/0.1.5/webuploader.min.js"></script>
+<script type="text/javascript">
+    var url_path = "${path}";
+</script>
 <script type="text/javascript" src="${path}/common/lib/icheck/jquery.icheck.min.js"></script>
-<script type="text/javascript" src="${path}/common/lib/cm.lib/jquery.provincesCity.js"></script>
-<script type="text/javascript" src="${path}/common/lib/cm.lib/provincesData.js"></script>
-<script type="text/javascript" src="${path}/common/lib/cm.lib/airCity.js"></script>
-<script type="text/javascript" src="${path}/common/lib/cm.lib/suggest.js"></script>
-<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/ueditor.config.js"></script>
-<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/ueditor.all.js"></script>
-<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/ueditor.parse.js"></script>
-<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/lang/zh-cn/zh-cn.js"></script>
 <script type="text/javascript">
+
+    var code_index = 1;
+    var main_code = $("#allDay").find("tr").eq(0).find("td").eq(0).attr("msg"); //主订单的单号
+    var order_number =0;    //订单数量
+
+    /*添加产品项   add = 添加   update = 修改*/
+    var isAddOrUpdate = '';
+    var tr_node_msg;    //添加/修改订单项,tr的节点
+    var $updateNode; //修改的tr元素
+
     $(function(){
+        //合并单元格
         tableMana(0);
-        tableMana(5);
+        tableMana(6);
 
-        $('.skin-minimal input').iCheck({
-            checkboxClass: 'icheckbox-blue',
-            radioClass: 'iradio-blue',
-            increaseArea: '20%'
+        $("#allDay").find("tr").each(function () {
+            var tdShow = $(this).find("td").eq(0).is(":visible");
+            if(tdShow){
+                order_number ++;
+            }
         });
-        $("#province").ProvinceCity();
+
         $('.skin-minimal input').iCheck({
             checkboxClass: 'icheckbox-blue',
             radioClass: 'iradio-blue',
             increaseArea: '20%'
         });
-        $("#arrcity").suggest(citys,{hot_list:commoncitys,dataContainer:'#arrcity_3word',onSelect:function(result){
-            console.log($(this)[0].value);
-            //		$("#city2").click()
-        },
-            attachObject:'#suggest'
-        });
     });
     /*查看物流*/
     function openLogistics(title, url, w, h) {
         layer_show(title,url,w,h);
     }
 
+    /**
+     *修改订单项
+     */
+    function updateOrderItem(thisNode) {
+        isAddOrUpdate = 'update';
+        $updateNode = $(thisNode).parent().parent();
+        tr_node_msg = $(thisNode).parent().parent().find("td").eq(0).attr("msg");
+        layer_show("商品列表",url_path + "/admin/salesOrder/to_add_product","1000","500");
+    }
+
+    /**
+     * 添加订单项
+     */
+    function addOrderItem(thisNode) {
+        isAddOrUpdate = 'add';
+        tr_node_msg = $(thisNode).parent().parent().find("td").eq(0).attr("msg");
+        layer_show("商品列表",url_path + "/admin/salesOrder/to_add_product","1000","500");
+    }
+
+    /*添加/修改商品的回调*/
+    function setSelectProduct(colorIds) {
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+
+        var colorIdArray = colorIds.split("_");
+        for(var i=0;i<colorIdArray.length;i++){
+            var colorId = colorIdArray[i];
+            if(colorId == ""){
+                break;
+            }
+
+            var flag = true;
+            $("#add_product").find("tr").each(function (){
+                var colId = $(this).find(".color_id").eq(0).val();
+                if(colId == colorId){
+                    flag  = false;
+                }
+            });
+            if(!flag){
+                continue;
+            }
+            $.ajax({
+                type: "POST",
+                data: { colorId : colorId},
+                url: url_path +"/admin/product/get_product",
+                success: function(data){
+
+                    if (data.returnCode == 200 && data.returnMsg.productColorList.length > 0 ) {
+                        if(isAddOrUpdate == "update"){
+                            //修改
+                            var productColor = data.returnMsg.productColorList[0];
+                            $updateNode.find("td").eq(1).html(cufte(productColor.productName));
+                            $updateNode.find("td").eq(2).html(cufte(productColor.colorName));
+                            $updateNode.find("td").eq(3).html(cufte(productColor.colorBar));
+                            $updateNode.find("td").eq(4).find(".input-itemNum").val(1);
+                        }else{
+                            //添加
+                            for(var i=0;i<data.returnMsg.productColorList.length;i++){
+                                var productColor = data.returnMsg.productColorList[i];
+                                var html = "";
+                                html +=  '<tr class="text-c '+ tr_node_msg +'">'
+                                        +   '<td msg="'+ tr_node_msg +'">'+ tr_node_msg +'</td>'
+                                        +   '<td>'+ cufte(productColor.productName) +'</td>'
+                                        +   '<td>'+ cufte(productColor.colorName) +'</td>'
+                                        +   '<td class="itemColorBar">'+ cufte(productColor.colorBar) +'</td>'
+                                        +   '<td><input type="text" style="width: 100%;text-align: center;" class="input-text input-number input-itemNum" value="1"  placeholder="产品数量" onkeyup="keyFun($(this),999,1),syncProductNumber()" onpaste="keyFun($(this),999,1),syncProductNumber()"></td>'
+                                        +   '<td msg="'+ tr_node_msg +'">'
+                                        +   '<a href="javascript:void(0)" onclick="updateOrderItem(this)">修改</a>&nbsp;&nbsp;'
+                                        +   '<a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>'
+                                        +   '</td>'
+                                        +   '<td msg="'+ tr_node_msg +'">'
+                                        +   ' <a href="javascript:void(0)" onclick="addOrderItem(this)">添加</a>'
+                                        +   '</td>'
+                                        +   '</tr>';
+                                var isTableEmpty = $("#allDay").find("."+tr_node_msg).eq(0).find("td").eq(1).html();
+                                if(isTableEmpty == "-"){
+                                    $("."+tr_node_msg).after(html);
+                                    $("."+tr_node_msg).eq(0).remove();
+                                }else{
+                                    var isHasColorBar = false;
+                                    var $hasNode = null;
+                                    $("#allDay").find("."+tr_node_msg).each(function () {
+                                        var bar = $(this).find("td.itemColorBar").html();
+                                        if(bar == productColor.colorBar){
+                                            isHasColorBar = true;
+                                            $hasNode = $(this);
+                                        }
+                                    });
+                                    if(isHasColorBar){
+                                        var val = $hasNode.find("td .input-itemNum").val();
+                                        $hasNode.find("td .input-itemNum").val(parseInt(val)+1);
+                                    }else{
+                                        var length = $("."+tr_node_msg).length;
+                                        $("."+tr_node_msg).eq(length-1).after(html);
+                                    }
+                                }
+                            }
+                        }
+                    }else{
+                        layer.msg("查询商品失败", {icon: 5, time: 3000});
+                    }
+                    //合并单元格
+                    tableMana(0);
+                    tableMana(6);
+                    syncProductNumber();
+                    layer.close(index);
+                },
+                error:function (XMLHttpRequest, textStatus, errorThrown){
+                    layer.close(index);
+                }
+            });
+        }
+
+
+    }
+
+    /**
+     * 添加订单
+     */
+    function addOrder() {
+        var newCode = "";
+        var flag = false;   //当循环中有该交易号,为true;
+        $("#allDay").find("tr").each(function () {
+            var soonCode = $(this).find("td").eq(0).attr("msg");
+            newCode = main_code+"-"+code_index;
+            if(soonCode == newCode){
+                flag = true
+            }
+        });
+        if(flag){
+            //循环中有该code
+            code_index ++ ;
+            addOrder();
+        }else{
+            var html = '';
+            html += '<tr class="text-c '+ newCode +'">'
+                    +   '<td msg="'+ newCode +'">'+ newCode +'</td>'
+                    +   '<td>-</td>'
+                    +   '<td>-</td>'
+                    +   '<td>-</td>'
+                    +   '<td>-</td>'
+                    +   '<td msg="'+ newCode +'">'
+                    +   '<a href="javascript:void(0)" onclick="deleteOrderItem(this)">删除</a>'
+                    +   '</td>'
+                    +   '<td msg="'+ newCode +'">'
+                    +   ' <a href="javascript:void(0)" onclick="addOrderItem(this)">添加</a>'
+                    +   '</td>'
+                    +   '</tr>';
+            $("#allDay").append(html);
+        }
+    }
+
+    /*
+    * 删除
+    * */
+    function deleteOrderItem(thisNode) {
+
+        var code = $(thisNode).parent().parent().find("td").eq(0).attr("msg");
+        var siblings = $(thisNode).parent().parent().siblings("."+code);
+
+        if(main_code == code){
+            var mainOrderLength = $("#allDay").find("tr."+main_code).length;
+            if(mainOrderLength <= 1){
+                layer.msg("主订单必须要有一个产品", {icon: 5, time: 3000});
+                return false;
+            }
+        }
+
+        $(thisNode).parent().parent().remove();
+        
+        //合并单元格
+        tableMana(0);
+        tableMana(6);
+        syncProductNumber();
+    }
+
+    /**
+     * 提交订单
+     */
+    function submitSplitOrder() {
+        var flag = true;
+        $("#productStatistics").find("tr").each(function(){
+            var oldNumber = parseInt($(this).find("td").eq(3).html());
+            var newNumber = parseInt($(this).find("td").eq(4).html());
+            if(oldNumber == newNumber){
+                flag = false;
+            }
+        });
+        if(!flag){
+            layer.confirm('产品数量出现变动,是否继续拆单?',function(index){
+                toSubmitSplitOrder();
+            });
+        }else{
+            toSubmitSplitOrder();
+        }
+    }
+    
+    function toSubmitSplitOrder() {
+        var mainOrderId = main_code;
+        var orderItemArray = new Array();
+        $("#allDay").find("tr").each(function (index) {
+            var bar = $(this).find("td").eq(3).html();
+            var salesOrderItem = new Object();
+            salesOrderItem.salesDealCode = $(this).find("td").eq(0).attr("msg");
+            salesOrderItem.itemColorBar = bar;
+            salesOrderItem.itemNum = $(this).find("td").eq(4).find("input").val();
+            orderItemArray.push(salesOrderItem);
+        });
+        var orderItemJson = JSON.stringify(orderItemArray);
+
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+
+        $.ajax({
+            type: "POST",
+            data: {
+                mainOrderId : mainOrderId,
+                orderItemJson : orderItemJson
+            },
+            url: url_path +"/admin/salesOrder/split_order",
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg("拆单成功", {icon: 1, time: 3000});
+                }else{
+                    layer.msg(data.resultMsg, {icon: 5, time: 3000});
+                }
+                layer.close(index);
+            },
+            error:function (XMLHttpRequest, textStatus, errorThrown){
+                layer.close(index);
+            }
+        });
+    }
 </script>
 
 <script>
+    /**
+     * 合并单元格
+     * @param num
+     */
     function tableMana(num) {
         var rowspanName = null;
         var rowspanNum = 1;
@@ -396,6 +694,63 @@
         $rowspan.show();
         $rowspan.attr("rowspan",rowspanNum);
     }
+
+    /**
+     * 同步数量
+     */
+    function syncProductNumber() {
+        var productArray = new Array();
+        $("#allDay").find("tr").each(function(){
+            var status  = $(this).find("td").eq(0).find("input").val();
+            var code  = $(this).find("td").eq(3).html();
+            var name  = $(this).find("td").eq(1).html();
+            var colorName  = $(this).find("td").eq(2).html();
+            var number = $(this).find("td").eq(4).find("input").val();
+
+            var flag = false;
+            for(var i=0;i<productArray.length;i++){
+                if(productArray[i].code == code){
+                    productArray[i].number = parseInt(productArray[i].number) + parseInt(number);
+                    flag = true;
+                }
+            }
+            if(!flag){
+                var product = new Object();
+                product.code = code;
+                product.name = name;
+                product.colorName = colorName;
+                product.number = parseInt(number);
+                productArray.push(product);
+            }
+        });
+
+        $("#productStatistics").find("tr").each(function(){
+            $(this).find("td").eq(4).html(0);
+        });
+
+        for(var i=0;i<productArray.length;i++){
+            var product = productArray[i];
+            var flag = false;
+            $("#productStatistics").find("tr").each(function(){
+                var oldCode = $(this).find("td").eq(2).html();
+                if(product.code == oldCode){
+                    $(this).find("td").eq(4).html(product.number);
+                    flag = true;
+                }
+            });
+            if(!flag){
+                var html = '<tr class="text-c">'+
+                        '<td>'+ product.name +'</td>'+
+                        ' <td>'+ product.colorName +'</td>'+
+                        ' <td>'+ product.code +'</td>'+
+                        ' <td>0</td>'+
+                        ' <td style="color: #c00">'+ product.number +'</td>'+
+                        '</tr>';
+                $("#productStatistics").append(html);
+            }
+        }
+
+    }
 </script>
 </body>
 </html>

+ 1 - 1
watero-rst-web/src/main/webapp/common/js/common/UnlimitedLevelContact.js

@@ -69,7 +69,7 @@
         },
         initUlcHtml : function(level,id){
             /*
-            * level 级别    id上一级节点id,作为参数     thisId 本级应该选中的值
+            * level 级别    id上一级节点id,作为参数
             */
             //初始化联动
             level = Number(level);