Просмотр исходного кода

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

# Conflicts:
#	watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
wangxiaoming 7 лет назад
Родитель
Сommit
4811045eb9

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java

@@ -93,6 +93,7 @@ public class CustomerInfo  implements Serializable {
     private CustomerCommon customerCommon = new CustomerCommon(); //处理结果综合  公共类
 
     private String transactionNumber;     //外部交易号,订单id
+    private Integer isAddOrder;      //1:原来就有订单  2:需要新添加订单
 
     public Date getVisitDate() {
         return visitDate;
@@ -469,4 +470,12 @@ public class CustomerInfo  implements Serializable {
     public void setTransactionNumber(String transactionNumber) {
         this.transactionNumber = transactionNumber;
     }
+
+    public Integer getIsAddOrder() {
+        return isAddOrder;
+    }
+
+    public void setIsAddOrder(Integer isAddOrder) {
+        this.isAddOrder = isAddOrder;
+    }
 }

+ 1 - 10
watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java

@@ -18,8 +18,7 @@ import java.util.List;
 public class EfastOrder implements Serializable{
     private static final long serialVersionUID = -930035471252331881L;
     private Integer oid;                        //订单id
-    private String orderId;                     //订单号  -- 交易号
-    private String efastOrderId;        //用于存储efast的订单id, 推送时不用传
+    private String orderId;                     //订单号
     private String orderAddressName;            //收货人姓名
     private String orderAddressTel;             //收货人电话
     private String orderOpenId;                 //收货人标识:身份证号/openid
@@ -248,12 +247,4 @@ public class EfastOrder implements Serializable{
     public void setOid(Integer oid) {
         this.oid = oid;
     }
-
-    public String getEfastOrderId() {
-        return efastOrderId;
-    }
-
-    public void setEfastOrderId(String efastOrderId) {
-        this.efastOrderId = efastOrderId;
-    }
 }

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java

@@ -19,6 +19,13 @@ public interface CustomerService {
     Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder) throws Exception;
 
     /**
+     * 添加订单到efast
+     * @param salesOrder
+     * @return
+     */
+    Map<String,Object> sendEfastOrder(SalesOrder salesOrder)throws Exception;
+
+    /**
      * 根据id获取客诉信息
      * @param customerId
      * @return

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

@@ -26,6 +26,8 @@ public interface SalesOrderService {
      */
     SalesOrder getSalesOrderById(Integer salesId);
 
+    SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) ;
+
     /**
      * 修改订单信息
      * @param salesOrder

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java

@@ -97,4 +97,10 @@ public interface ProductService {
      * @return
      */
     Product getProductByFittingsId(Integer fittingsId);
+
+    /**
+     * 获取单个颜色
+     * @return
+     */
+    ProductColor getProduceColor(Integer colorId);
 }

+ 176 - 6
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -5,10 +5,7 @@ import com.iamberry.rst.core.address.City;
 import com.iamberry.rst.core.address.District;
 import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.cm.*;
-import com.iamberry.rst.core.order.EfastOrder;
-import com.iamberry.rst.core.order.OrderItem;
-import com.iamberry.rst.core.order.Product;
-import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.core.order.*;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.cm.CustomerService;
 import com.iamberry.rst.faces.order.EfastOrderService;
@@ -17,6 +14,9 @@ import com.iamberry.rst.service.cm.mapper.*;
 import com.iamberry.rst.service.order.EfastOrderServiceImpl;
 import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.util.PageUtil;
+import net.sf.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,6 +29,8 @@ import java.util.Map;
 @Service
 public class CustomerServiceImpl implements CustomerService {
 
+    private static Logger logger = LoggerFactory.getLogger(CustomerServiceImpl.class);
+
     @Autowired
     private CustomerInfoMapper customerInfoMapper;
     @Autowired
@@ -118,6 +120,7 @@ public class CustomerServiceImpl implements CustomerService {
                 (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ||
                 customerInfo.getCustomerIsSolve() == 6 || customerInfo.getCustomerIsSolve() == 7)
                 ){
+
             salesOrder = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
 
             CustomerCommon customerCommon = customerInfo.getCustomerCommon();
@@ -134,8 +137,12 @@ public class CustomerServiceImpl implements CustomerService {
             ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();  //品质检测
             ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo(); //客诉-签收表
             Map<String,Object> map;
+            boolean isReturn = false;
             switch (customerInfo.getCustomerIsSolve()) {  //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
                 case 3: //换新
+
+                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder);    //原订单生成退单
+
                     map = this.sendEfastOrder(customerCommon,salesOrder);  //换新需要向Efast推送一条换新发货的订单
                     if(map.get("status") == 1){
                         customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
@@ -149,6 +156,9 @@ public class CustomerServiceImpl implements CustomerService {
                     this.saveComplaintDetectInfo(complaintDetectInfo,customerCommon);   //创建品检
                     break;
                 case 4: //维修
+
+                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder);    //原订单生成退单
+
                     map = this.sendEfastOrder(customerCommon,salesOrder);  //维修需要向Efast推送一条维修发货的订单
                     if(map.get("status") == 1){
                         customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
@@ -290,7 +300,11 @@ public class CustomerServiceImpl implements CustomerService {
             for(int j=0; j<closedProdcue.getClosedProdcueNumber();j++){
                 complaintDetectInfo.setProductId(closedProdcue.getProductId());
                 complaintDetectInfo.setDetectProductType(closedProdcue.getProductType());
-                complaintDetectInfo.setDetectProductNumber(closedProdcue.getProductNumber());
+                if(closedProdcue.getProductNumber() == null || "".equals(closedProdcue.getProductNumber())){
+                    complaintDetectInfo.setDetectProductNumber("0");
+                }else{
+                    complaintDetectInfo.setDetectProductNumber(closedProdcue.getProductNumber());
+                }
             }
             complaintDetectInfoList.add(complaintDetectInfo);
         }
@@ -316,6 +330,7 @@ public class CustomerServiceImpl implements CustomerService {
         complaintSignclosedInfo.setSignclosedState(2); //处理状态  2:未签收
         complaintSignclosedInfo.setSignclosedObjectsState(3); //物件状态  3:暂未签收
         complaintSignclosedInfo.setSignclosedCustomerId(customerCommon.getCustomerId()); //客诉id
+        complaintSignclosedInfo.setSignclosedIsFittings(2);
         flag = complaintSignclosedInfoMapper.insert(complaintSignclosedInfo);
         if(flag < 1){
             throw new Exception("添加签收失败");
@@ -411,6 +426,9 @@ public class CustomerServiceImpl implements CustomerService {
             case 5: //支付宝支付
                 efastOrder.setOrderPayType(5);
                 break;
+            default:
+                efastOrder.setOrderPayType(2);  //默认现金
+                break;
         }
 
         efastOrder.setOrderProductBarCode(orderProductBarCode); //产品sku
@@ -433,10 +451,162 @@ public class CustomerServiceImpl implements CustomerService {
             status = 0;
         }
         map.put("status",status);
-        map.put("EfastOrderId",oList.get(0).getEfastOrderId());
+        map.put("EfastOrderId",oList.get(0).getOrderId());
+        return map;
+    }
+
+    /**
+     * 向Efast推送订单--添加订单
+     * @return
+     */
+    public Map<String,Object> sendEfastOrder(SalesOrder salesOrder) throws Exception{
+        Map<String,Object> map = new HashMap<String,Object>();
+        List<EfastOrder> orderList = new ArrayList<EfastOrder>();
+        List<OrderItem> itemList = new ArrayList<OrderItem>();
+
+        Integer num = 0;  //产品数量
+        Integer amout = 0; //商品总价
+        String orderProductBarCode = "";    //产品sku
+        String productName = "";    //产品名称
+        for(int i=0;i<salesOrder.getSalesOrderItemList().size();i++){
+            SalesOrderItem salesOrderItem = salesOrder.getSalesOrderItemList().get(i);
+            OrderItem orderItem = new OrderItem();
+            orderItem.setItemProductName(salesOrderItem.getItemProductName());
+            orderItem.setItemProductNum(salesOrderItem.getItemNum());
+            orderItem.setItemProductPrice(salesOrderItem.getItemProductPrice());
+            orderItem.setItemColorBar(salesOrderItem.getItemColorBar());
+            itemList.add(orderItem);
+            orderProductBarCode = salesOrderItem.getItemColorBar();
+            productName = salesOrderItem.getItemProductName();
+            num += salesOrderItem.getItemNum();
+            amout += salesOrderItem.getItemProductPrice();
+        }
+
+        EfastOrder efastOrder = new EfastOrder();
+        efastOrder.setOrderAddressName(salesOrder.getSalesAddressName());//收货人姓名
+        efastOrder.setOrderAddressTel(salesOrder.getSalesAddressTel());//收货人电话
+        efastOrder.setOrderOpenId("1");//身份证
+
+        String[] address = salesOrder.getSalesAddressInfo().split("-");
+        efastOrder.setOrderProvince(address[0]);
+        efastOrder.setOrderCity(address[1]);
+        efastOrder.setOrderArea(address[2]);
+        String myAddress = "";
+        if(address.length > 4){
+            myAddress = address[3] + address[4];
+        }else{
+            myAddress =  address[3];
+        }
+        efastOrder.setOrderAddress(myAddress);
+        efastOrder.setOrderStatus(2);
+
+        efastOrder.setOrderNum(num); //产品数量
+        efastOrder.setOrderAmount(amout);   //商品总价
+        efastOrder.setOrderPayMoney(amout); //已付款
+
+        //支付方式
+        switch (salesOrder.getSalesPayType()){
+            case 1: //微信支付
+                efastOrder.setOrderPayType(1);
+                break;
+            case 2: //现金支付
+                efastOrder.setOrderPayType(2);
+                break;
+            case 3:
+                break;
+            case 4: //刷卡支付
+                efastOrder.setOrderPayType(4);
+                break;
+            case 5: //支付宝支付
+                efastOrder.setOrderPayType(5);
+                break;
+            default:
+                efastOrder.setOrderPayType(2);  //默认现金
+                break;
+        }
+
+        efastOrder.setOrderProductBarCode(orderProductBarCode); //产品sku
+        efastOrder.setOrderProductName(productName);    //产品名称
+
+        efastOrder.setOrderId(salesOrder.getSalesDealCode());   //外部交易号
+        efastOrder.setOid(1);
+
+        orderList.add(efastOrder);
+
+        Integer status = 1;
+        Map<String,Object>  orderMap = new HashMap<String,Object>();
+        try {
+            orderMap = efastOrderService.sendOrder(orderList,itemList);
+        } catch (Exception e) {
+            status = 0;
+        }
+        List<EfastOrder> oList = (List<EfastOrder>) orderMap.get("efastOrderList");
+        if(oList == null || oList.size() < 1){
+            status = 0;
+        }
+        map.put("status",status);
+        map.put("EfastOrderId",oList.get(0).getOrderId());
         return map;
     }
 
+    /**
+     * 将原订单生成退货单
+     * @param customerCommon
+     * @param salesOrder
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    boolean chargebackEfastOrder(CustomerCommon customerCommon, SalesOrder salesOrder) throws Exception{
+
+        SalesOrder order = new SalesOrder();
+        order.setSalesId(salesOrder.getSalesId());
+        order.setSalesStatus(8);
+        Integer flag = salesOrderMapper.updateSalesOrder(order);
+//        if(flag < 0){
+//            throw new Exception("退货失败");
+//        }
+
+        EfastOrder efastOrder = new EfastOrder();
+        List<EfastOrderItem> itemList = new ArrayList<>();
+
+        for(int i=0;i<customerCommon.getSendProdcues().size();i++){
+            SendProdcue sendProdcue = customerCommon.getSendProdcues().get(i);
+            EfastOrderItem efastOrderItem = new EfastOrderItem();
+            efastOrderItem.setItemColorBar(sendProdcue.getProductColor().getColorBar());
+            efastOrderItem.setItemNum(sendProdcue.getSendProdcueNumber());
+            efastOrderItem.setItemDiscount(sendProdcue.getProductColor().getColorPrice());
+            itemList.add(efastOrderItem);
+        }
+        efastOrder.setOrderDealCode(salesOrder.getSalesDealCode()); //交易号
+        efastOrder.setOrderPostFirm(salesOrder.getSalesPostFirm()); //物流代码
+        efastOrder.setOrderDealCode(salesOrder.getSalesDealCode()); //物流单号
+        efastOrder.setOrderId(salesOrder.getSalesOrderId());        //订单编号
+        efastOrder.setItemList(itemList);
+
+        JSONObject jsonObject = new JSONObject();
+        boolean fg = false;
+        try{
+            jsonObject = efastOrderService.returnOrderFormEfast(efastOrder);
+            logger.info("------将原订单生成退货订单返回数据:" + jsonObject + "------");
+            if(jsonObject != null){
+                JSONObject  respData = JSONObject.fromObject(jsonObject.get("resp_data"));
+                if(respData != null ){
+                    String returnSn =  respData.getString("return_sn");
+                    if(returnSn != null || !"".equals(returnSn)){
+                        fg = true;
+                    }
+                }
+            }
+        }catch (Exception e){
+            logger.info("------将原订单生成退货订单报错------");
+        }
+        if(fg){
+            return true;
+        }else{
+            return false;
+        }
+    }
 
     @Override
     public Integer updateCustomerInfo(CustomerInfo record) {

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

@@ -17,6 +17,7 @@ import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -93,6 +94,25 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
+    @Transactional
+    public SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
+        //添加订单数据
+        int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
+        if (orderNum <= 0) {
+            return salesOrder;
+        }
+        for (SalesOrderItem item : list) {
+            item.setItemOrderId(salesOrder.getSalesId());
+        }
+        //批量添加订单项数据
+        int itemNum = salesOrderMapper.addOrderItemList(list);
+        if (itemNum <= 0) {
+            return salesOrder;
+        }
+        return salesOrder;
+    }
+
+    @Override
     public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
         return salesOrderMapper.listSalesOrderItem(salesOrderItem);
     }

+ 4 - 4
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -195,11 +195,11 @@
   <update id="updateSalesOrder" parameterType="SalesOrder" >
     update tb_rst_sales_order_info
     <set >
-      <if test="salesOrderid != null" >
-        sales_orderId = #{salesOrderid,jdbcType=VARCHAR},
+      <if test="salesOrderId != null" >
+        sales_orderId = #{salesOrderId,jdbcType=VARCHAR},
       </if>
-      <if test="salesOpenid != null" >
-        sales_openId = #{salesOpenid,jdbcType=VARCHAR},
+      <if test="salesOpenId != null" >
+        sales_openId = #{salesOpenId,jdbcType=VARCHAR},
       </if>
       <if test="salesDiscountMoney != null" >
         sales_discount_money = #{salesDiscountMoney,jdbcType=INTEGER},

+ 4 - 4
watero-rst-service/src/main/java/com/iamberry/rst/service/order/EfastOrderServiceImpl.java

@@ -51,8 +51,8 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 
 
     private static List<EfastOrder> efastOrderList = new ArrayList<EfastOrder>();
-    private static String order_sn = "";
-    private static String transactionNumber = "";
+    private static String order_sn = "";        //订单号
+    private static String transactionNumber = "";       //交易号
 
     @Override
     public Map<String,Object> sendOrder(List<EfastOrder> orderList, final List<OrderItem> itemList) throws Exception {
@@ -75,8 +75,8 @@ public class EfastOrderServiceImpl implements EfastOrderService {
                 boolean flag = sendExcuteOneOrder(order, itemList);
                 if (flag) {
                     EfastOrder eo = new EfastOrder();
-                    eo.setEfastOrderId(order_sn);
-                    eo.setOrderId(transactionNumber);
+                    eo.setOrderId(order_sn);
+                    eo.setOrderDealCode(transactionNumber);
                     efastOrderList.add(eo);
 
                     order.setReturnStatus("SUCCESS");

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java

@@ -143,4 +143,10 @@ public class ProductServiceImpl implements ProductService {
         return productMapper.getProductByFittingsId(fittingsId);
     }
 
+    @Override
+    public ProductColor getProduceColor(Integer colorId) {
+        return productMapper.getProduceColor(colorId);
+    }
+
+
 }

+ 98 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -27,8 +27,11 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.MessageFormat;
 import java.util.*;
 
+import static com.iamberry.rst.util.SmsConfig.CONFIRM_TEXT;
+
 /**
  * Created by wxm
  */
@@ -137,6 +140,90 @@ public class AdminCustomerController {
         return mv;
     }
 
+    /**
+     * 添加订单列表弹出框
+     *
+     * @return
+     */
+    @RequiresPermissions("customer:add:customer")
+    @RequestMapping(value = "/add_order")
+    public ModelAndView addOder(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/customer/order_add");
+        return mv;
+    }
+
+    /**
+     * 添加订单
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:add:customer")
+    @RequestMapping(value = "/add_order_info")
+    public ResponseJson addOrderInfo(HttpServletRequest request,SalesOrder salesOrder,String itemJson)throws Exception {
+
+        List<SalesOrderItem> list = new ArrayList<>();
+        JSONArray jsonArray = JSONArray.fromObject(itemJson);
+        list = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
+
+        Integer salesAmount  = 0;
+
+        for(int i=0;i<list.size();i++){
+            SalesOrderItem salesOrderItem = list.get(i);
+            Product product = productService.getProductById(salesOrderItem.getItemProductId());
+            ProductColor productColor = productService.getProduceColor(salesOrderItem.getItemProductId());
+            salesOrderItem.setItemProductType(product.getProductType());
+            salesOrderItem.setItemProductName(product.getProductName());
+            salesOrderItem.setItemProductPic(productColor.getColorPicture());
+            salesOrderItem.setItemProductColor(productColor.getColorName());
+            salesOrderItem.setItemColorBar(productColor.getColorBar());
+            salesOrderItem.setItemProductPrice(productColor.getColorPrice());
+            salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
+            salesOrderItem.setItemIsSource(1);
+            salesAmount += productColor.getColorDiscount();
+        }
+
+        salesOrder.setSalesOpenId("0");
+        salesOrder.setSalesAmount(salesAmount);
+        salesOrder.setSalesPayMoney(salesAmount);
+        salesOrder.setSalesPayStatus(2);
+        salesOrder.setSalesShippingStatus(5);
+        salesOrder.setSalesStatus(0);
+        salesOrder.setSalesOrderStatus(1);
+        salesOrder.setSalesCreateTime(new Date());
+        //salesOrder.setSalesPayTime(new Date());
+        salesOrder.setSalesShippingFee(0);
+        salesOrder.setSalesLastMoney(salesAmount);
+        salesOrder.setSalesWaitMoney(0);
+        salesOrder.setSalesPayMoney(salesAmount);
+        salesOrder.setSalesSalesTime(new Date());
+        salesOrder.setSalesDiscountMoney(salesAmount);
+        salesOrder.setSalesPledgeMoney(0);
+        salesOrder.setSalesRemainDeposit(0);
+        salesOrder.setSalesType(1);
+
+        Integer adminId = AdminUtils.getLoginAdminId();
+        String orderCode = OrderNoUtil.createOrderCode(adminId);
+        salesOrder.setSalesDealCode(orderCode);
+        salesOrder.setSalesOrderId(orderCode);
+
+        salesOrder = salesOrderService.addOrderAndIteminfo(salesOrder,list);
+
+        Map<String,Object>  map = customerService.sendEfastOrder(salesOrder);
+        if(map.get("status") == 1){
+            salesOrder.setSalesOrderId((String) map.get("EfastOrderId"));
+        }else{
+            return new ResponseJson(500, "添加订单失败!", 500);
+        }
+
+        Integer orderId =salesOrder.getSalesId();
+        ResponseJson rj = new ResponseJson(200, "添加成功", 200);
+        rj.addResponseKeyValue("orderId", orderId);
+        return rj;
+    }
+
+
+
 
     /**
      * 获取店铺集合
@@ -476,6 +563,7 @@ public class AdminCustomerController {
             orderId = OrderNoUtil.createOrderCode(adminId);
         }
         customerInfo.setTransactionNumber(orderId);
+
         flag = customerService.saveCustomerInfo(customerInfo, salesOrder);
 
         if (flag < 1) {
@@ -520,9 +608,17 @@ public class AdminCustomerController {
         }
 
         flag =  complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
-//        ResponseJson rj = smsService.sms(phone,1,);
-
         if (flag < 1) {
+            return new ResponseJson(500, "问题修改失败!", 500);
+        }
+
+        String text = MessageFormat.format(CONFIRM_TEXT, complaintQuestionInfo.getQuestionProfile());
+        String result = smsService.sendOtherCMS(phone, text);
+
+        ResponseJson json = new ResponseJson();
+        ResponseJson rj = json.addResponseKeyValue(result);
+
+        if (rj.getResultCode() != 200) {
             return new ResponseJson(500, "发送短信失败!", 500);
         } else {
             return new ResponseJson(200, "发送短信成功!", 200);

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

@@ -177,8 +177,7 @@
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>问题内容:</label>
                 <div class="formControls col-5 col-sm-5">
                     <input type="hidden" name="questionId" id="questionId">
-                    <script id="describeContentText" type="text/plain" style="width:650px;height:250px;">
-                    </script>
+                    <script id="describeContentText" type="text/plain" style="width:650px;height:250px;"></script>
                     </script>
                     <input type="hidden" name="describeContent" id="describeContent">
                 </div>
@@ -186,7 +185,7 @@
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="请输入手机号" id="p-phone" name="">
+                    <input type="text" class="input-text associated-phone" value="" placeholder="请输入手机号" id="p-phone" name="">
                 </div>
                 <div class="formControls col-2 col-sm-2" style="width: 10%">
                     <input type="button" class="btn btn-primary" value="发短信給用户" onclick="sendPhone('p','p-msg');">
@@ -299,7 +298,7 @@
                     <input type="text" class="input-text" value="" placeholder="填写收件人姓名" id="sendName" name="relationSendName" datatype="s1-20" 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 associated-phone" value="" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" errormsg="联系人电话格式不正确!">
                 </div>
             </div>
             <div class="row cl" id="recipientAddress" style="display: none;">
@@ -392,29 +391,30 @@
                 </div>
                 <input type="hidden" name="customerArea" id="customerArea">
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="进水tds数值" id="customerInTDS" name="customerInTDS">
+                    <input type="text" class="input-text" value="" placeholder="进水TDS数值" id="customerInTDS" name="customerInTDS" onkeyup="keyFun($(this))" onpaste="keyFun($(this))">
                 </div>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="出水tds数值" id="customerOutTDS" name="customerOutTDS">
+                    <input type="text" class="input-text" value="" placeholder="出水TDS数值" id="customerOutTDS" name="customerOutTDS" onkeyup="keyFun($(this))" onpaste="keyFun($(this))">
                 </div>
             </div>
             <div class="row cl" id="TDScollectShow" style="display: none;">
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-6 col-sm-6">
-                    tds收集:广东省-深圳市-福田区   进水:100ppm   出水:100ppm
+                    TDS收集:<span id="DTS-address"></span>
+                    &nbsp;&nbsp;&nbsp;&nbsp;进水:<span id="DTS-in"></span>PPM   出水:<span id="DTS-out"></span>PPM
                 </div>
             </div>
             <div class="row cl" id="sendAddressInfo">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>寄回信息:</label>
-                <div class="formControls col-5 col-sm-5" style="height: 400px">
-                    <script id="sendAddressSms" type="text/plain" style="width:650px;height:250px;"></script>
+                <div class="formControls col-5 col-sm-5" style="height: 300px">
+                    <script id="sendAddressSms" type="text/plain" style="width:1000px;height:250px;"></script>
                     </script>
                 </div>
             </div>
             <div class="row cl" id="sendAddressByPhone" style="display: none;">
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="请输入手机号" id="m-phone" name="">
+                    <input type="text" class="input-text associated-phone" value="" placeholder="请输入手机号" id="m-phone" name="">
                 </div>
                 <div class="formControls col-2 col-sm-2" style="width: 10%">
                     <input type="button" class="btn btn-primary" value="发短信給用户" onclick="sendPhone('m','m-msg');">
@@ -445,7 +445,7 @@
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>处理描述:</label>
                 <div class="formControls col-5 col-sm-5">
-                    <script id="describeHandleDescText" type="text/plain" style="width:650px;height:250px;"></script>
+                    <script id="describeHandleDescText" type="text/plain" style="width:1000px;height:250px;"></script>
                     </script>
                     <input type="hidden" id="describeHandleDesc" name="describeHandleDesc">
                 </div>
@@ -470,7 +470,7 @@
                         <input type="text" class="input-text" value="" placeholder="填写回访人姓名" id="" name="visitName"  datatype="s1-20" errormsg="回访人姓名格式不正确!" >
                     </div>
                     <div class="formControls col-2 col-sm-2">
-                        <input type="text" class="input-text" value="" placeholder="填写回访人手机号" id="" name="visitTel" datatype="m" errormsg="回访人手机号码格式不正确!">
+                        <input type="text" class="input-text associated-phone" value="" placeholder="填写回访人手机号" id="" name="visitTel" datatype="m" errormsg="回访人手机号码格式不正确!">
                     </div>
                 </div>
                 <div class="row cl">
@@ -521,7 +521,9 @@
     </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" src="${path}/common/lib/icheck/jquery.icheck.min.js"></script>
 <script type="text/javascript" src="${path}/common/lib/cm.lib/jquery.provincesCity.js"></script>
@@ -530,9 +532,6 @@
 <#--<script type="text/javascript" src="${path}/common/lib/cm.lib/dimensions.js"></script>-->
 <script type="text/javascript" src="${path}/common/lib/cm.lib/suggest.js"></script>
 
-<#--时间控件-->
-<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.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>
@@ -558,8 +557,8 @@
     });
 
     $(document).on('click', '.dalog-ask .answer', function() {
-        var msg = $(this).find("span").text();
-        UE.getEditor('describeContentText').setContent(msg,false);
+        var msg = $(this).find("span").html();
+        UE.getEditor('describeContentText').setContent(msg);
 
         $("#questionId").val($(this).find(".quesId").val());
 
@@ -584,7 +583,11 @@
     /*处理描述*/
     var describeHandleDescText = UE.getEditor('describeHandleDescText');
     /*邮寄地址*/
-    var sendAddressSms = UE.getEditor('sendAddressSms');;
+    var sendAddressSms = UE.getEditor('sendAddressSms');
+
+    sendAddressSms.ready(function() {
+        sendAddressSms.setHeight(250);  //固定高度
+    });
 </script>
 <script type="text/javascript">
 
@@ -692,6 +695,31 @@
                 showVisitMsg(2,visitAdminName);
             }
         });
+
+        /* 监听TDS收集--地址选择 */
+        $(document).on('change', '#TDSArea', function() {
+            setTDSCollect();
+        });
+        /*实时监听文本框-- TDS进水*/
+        document.getElementById("customerInTDS").addEventListener("input", function(){
+            setTDSCollect();
+        });
+        /*实时监听文本框-- TDS出水*/
+        document.getElementById("customerOutTDS").addEventListener("input", function(){
+            setTDSCollect();
+        });
+
+        /* 监听手机号 失去焦点时  将其他手机号码未填的 */
+        $(".associated-phone").blur(function (){
+            var phone = $(this).val();
+            $(".associated-phone").each(function(){
+                var ph = $(this).val();
+                if(ph == null || ph == "" || typeof(ph) == undefined ){
+                    $(this).val(phone);
+                }
+            })
+        })
+
     })
 
     /*初始化单选框样式*/
@@ -703,6 +731,15 @@
         });
     }
 
+    function keyFun(node){
+        var c=$(node);
+        if(/[^\d]/.test(c.val())){//替换非数字字符
+            var temp_amount=c.val().replace(/[^\d]/g,'');
+            $(node).val(temp_amount);
+        }
+    }
+
+
     /*初始化客服*/
     function initSysAdmin() {
         var sysAminList = getSysAdmin();
@@ -840,10 +877,10 @@
             }
         }else if(allCustomerInfoType == 2){ //售后
 
-//            var msg = UE.getEditor('sendAddressSms').getContent();
-//            if(msg == null || msg == ""){
-//                initComplaintQuestionInfo("m");
-//            }
+            var msg = UE.getEditor('sendAddressSms').getContent();
+            if(msg == null || msg == ""){
+                initComplaintQuestionInfo("m");
+            }
             $("#renewed").show();
             $("#maintain").show();
             $("#reissue").show();
@@ -1157,6 +1194,10 @@
      * 显示选择的订单
      */
     function setSelectOrder(orderId){
+        if(orderId == null || orderId  == "" || typeof (orderId)=="undefined"){
+            layer.msg("未选中订单", {icon: 5, time: 3000});
+            return false
+        }
         var html = '';
         var address = ''; //地址
         var orderItemList = {};
@@ -1420,7 +1461,7 @@
                                 '         <td width="15" style="'+ fristInputStyle +'">' +
                                 '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
                                 '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
-                                '             <input type="text" class="input-text input-color-number" style="width: 100%;" value="'+ number +'" placeholder="产品数量" id="" name="">' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;" value="'+ number +'" placeholder="产品数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
                                 '         </td>' +
                                 '     </tr>';
                         fristInputStyle = "";
@@ -1444,7 +1485,7 @@
                                 '         <td width="15" style="'+ fristInputStyle +'">' +
                                 '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
                                 '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
-                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="产品数量" id="" name="">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="配件数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
                                 '         </td>' +
                                 '     </tr>';
                         fristInputStyle = "";
@@ -1539,6 +1580,17 @@
 
         }
     }
+
+    /*设置TDS收集信息*/
+    function setTDSCollect(){
+        var TDSArea = $("#TDSArea").find("option:selected").text();
+        var TDSAddress = TDSCity + '-' + TDSArea;
+        $("#DTS-address").html(TDSAddress);
+
+        $("#DTS-in").html($("#customerInTDS").val());
+
+        $("#DTS-out").html($("#customerOutTDS").val());
+    }
 </script>
 <script>
     $(function(){
@@ -1559,7 +1611,10 @@
 
             },
             beforeSubmit: function (curform) {  //验证通过之后执行的函数
-                addCustomerReady();
+                var flag  = addCustomerReady();
+                if(!flag){
+                    return false;
+                }
             },
             callback: function (data) {//异步回调函数
                 if (data) {
@@ -1605,11 +1660,19 @@
 
         /*----问题描述- start --*/
         var describeContentText = UE.getEditor('describeContentText').getContent();
+        if(describeContentText == null || describeContentText == ""){
+            layer.msg("未填写问题描述", {icon: 5, time: 3000});
+            return false;
+        }
         $("#describeContent").val(describeContentText);
         /*----问题描述--end-----*/
 
         /*----处理描述- start --*/
         var describeHandleDescText = UE.getEditor('describeHandleDescText').getContent();
+        if(describeContentText == null || describeContentText == ""){
+            layer.msg("未填写处理描述", {icon: 5, time: 3000});
+            return false;
+        }
         $("#describeHandleDesc").val(describeHandleDescText);
         /*----处理描述--end-----*/
 
@@ -1618,6 +1681,7 @@
         var sendFittings = new Array();
         var closedProdcues = new Array();
         var closedFittings = new Array();
+
         $("#addProduct").find(".input-color-number").each(function(){
             var number = $(this).val();
             if(number != null && number != ""){
@@ -1684,24 +1748,10 @@
         $("#sendFittings").val(JSON.stringify(sendFittings));
         $("#closedProdcues").val(JSON.stringify(closedProdcues));
         $("#closedFittings").val(JSON.stringify(closedFittings));
-    }
 
-    /* 添加客诉 */
-//    function save_submit(){
-//        var customerSourceType = $("input[name='customerSourceType']:checked").val();
-//        if(customerSourceType == 3){
-//            var customerSource = $("#customerSource").val();
-//            if(customerSource == null || customerSource ==""){
-//                showErrorMsg($("#customerSource"),"请输入来源入口!");
-//            }
-//        }
-//    }
-
-    /*提示错误信息*/
-    function showErrorMsg(node,msg){
-        node.select();
-        layer.msg(msg, {icon: 2, time: 2000});
+        return true;
     }
+
 </script>
 
 <!--/请在上方写此页面业务相关的脚本-->

+ 395 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/order_add.ftl

@@ -0,0 +1,395 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+<#include "/base/add_base.ftl">
+    <title>添加订单</title>
+    <style>
+        .tit{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        .tit-2{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit-2:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
+
+        #suggest, #suggest2 {width:200px}
+        .gray {color:gray}
+        .ac_results {background:#fff;border:1px solid #7f9db9;position: absolute;z-index: 10000;display: none}
+        .ac_results li a {white-space: nowrap;text-decoration:none;display:block;color:#05a;padding:1px 3px}
+        .ac_results li {border:1px solid #fff}
+        .ac_over, .ac_results li a:hover {background:#c8e3fc}
+        .ac_results li a span {float:right}
+        .ac_result_tip {border-bottom:1px dashed #666;padding:3px}
+
+        .select-box{background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;}
+        .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
+        .dalog-ask{position: absolute;left:60%;top:0;-webkit-transform: translateY(-30%);transform: translateY(-30%); background-color: #fff;z-index: 10;}
+        .tag{ width:300px; min-height:300px; border:1px solid #32a3d8; position:relative;background-color: #fff;line-height: 1.5;padding: 10px 12px;}
+        .tag em{display:block; border-width:15px; position:absolute; top:30%; left:-30px;border-style:solid dashed dashed; border-color:transparent  #32a3d8 transparent transparent;font-size:0; line-height:0;}
+        .dalog-ask .ask{color: #000;margin: 10px 0 5px 0;}
+        .dalog-ask .answer{color: #666;margin-bottom: 10px;}
+        .dalog-ask .answer:hover{color: #32a3d8;cursor: pointer;}
+        .time-line-list{list-style: none;width: 100%;margin-left: -20px;}
+        .time-line-list>li{position: relative;float: left; text-align: center;width: 100px;overflow: hidden;white-space: nowrap;word-break: break-all;padding: 2px 0;}
+        .time-line-list .number{display: inline-block; padding: 2px; background: #32a3d8;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
+        .time-line-list>li:before{content:'';position: absolute;height: 1px;width: 30%;right:0;top: 15px; background-color: #32a3d8;}
+        .time-line-list>li:after{content: '';position: absolute;height: 1px;width: 30%;left: 0;top: 15px;background:#32a3d8;}
+        .time-line-list>li:first-child:after,.time-line-list>li:last-child:before{ }
+        .time-line-list .arrow{border-width:7px; position:absolute; left:25%; top:9px;border-style:solid dashed dashed; border-color:transparent  transparent  transparent #32a3d8;font-size:0; line-height:0;}
+        .time-line-list>li:first-child .arrow{ }
+        .table-bg th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
+        .input-produce{height: 25px;line-height: 25px}
+        .color-div{height: 30px;}
+        .table-td-color{}
+        .msg-phone{height: 35px;line-height: 35px;}
+    </style>
+</head>
+<body>
+<div class="page-container">
+    <form action="${path}/admin/customer/add_order_info" method="post" class="form form-horizontal" id="form-order-add"  onkeydown="if(event.keyCode==13)return false;">
+    <div id="addOrder" >
+
+        <input type="hidden" name="itemJson" id="itemJson" value="">
+        <input type="hidden" name="salesStoreId" id="salesStoreId" value="0">
+        <input type="hidden" name="salesCompanyId" id="salesCompanyId" value="0">
+        <input type="hidden" name="salesPayType" id="salesPayType" value="1">
+        <input type="hidden" name="salesSendType" id="salesSendType" value="2">
+
+        <div style="">
+            <div class="row cl" id="productInfo" style="">
+                <label class="form-label col-1 col-sm-1" style="width: 110px;"><span class="c-red">*</span>购买信息:</label>
+                <div class="formControls col-10 col-sm-10">
+
+                    <table class="table table-border table-bg table-bordered">
+                        <thead>
+                        <tr class="text-c">
+                            <th style="text-align: center;" width="60">产品名称</th>
+                            <th style="text-align: center;" width="60">产品颜色</th>
+                            <th style="text-align: center;" width="60">产品配件</th>
+                        </tr>
+                        </thead>
+                        <tbody id="addProduct">
+
+                        </tbody>
+                    </table>
+
+                </div>
+            </div>
+
+            <div class="row cl" id="recipientInfo" style=" margin-top: 20px;">
+                <label class="form-label col-1 col-sm-1" style="width: 110px;"><span class="c-red">*</span>购买信息:</label>
+                <div class="formControls col-3 col-sm-3">
+                    <input type="text" class="input-text" value="" placeholder="填写收件人姓名" id="sendName" name="salesAddressTel" datatype="s1-20" errormsg="联系人格式不正确!" >
+                </div>
+                <div class="formControls col-3 col-sm-3">
+                    <input type="text" class="input-text associated-phone" value="" placeholder="填写收件人手机号" id="sendTel" name="salesAddressName" datatype="m" errormsg="联系人电话格式不正确!">
+                </div>
+                <div class="formControls col-3 col-sm-3">
+                    <input type="text" placeholder="购买日期" id="salesPayTime"  name="salesPayTime" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',dateFmt: 'yyyy-MM-dd HH:mm:ss'})"  readonly="readonly">
+                </div>
+            </div>
+            <div class="row cl" id="recipientAddress" style=" margin-top: 20px;">
+                <input type="hidden" id="addressInfo">
+                <label class="form-label col-1 col-sm-1" style="width: 110px;"><span class="c-red">*</span>收货地址:</label>
+                <div class="formControls col-3 col-sm-3">
+                            <span class="select-box">
+                                 <select id="province" class="select" name="provinceNumber">
+                                 </select>
+                             </span>
+                </div>
+                <div class="formControls col-3 col-sm-3">
+                            <span class="select-box">
+                                <select id="city" class="select" name="cityNumber">
+                                </select>
+                            </span>
+                </div>
+                <div class="formControls col-3 col-sm-3">
+                            <span class="select-box">
+                                <select id="district" class="select" name="areaNumber">
+                                </select>
+                            </span>
+                </div>
+
+                <input type="hidden" name="salesAddressInfo" id="salesAddressInfo">
+            </div>
+            <div class="row cl" id="recipientAddressText" style=" margin-top: 20px;">
+                <label class="form-label col-1 col-sm-1" style="width: 110px;"></label>
+                <div class="formControls col-10 col-sm-10">
+                    <textarea name="relationSendAddress" id="sendAddress" cols="" rows="2" class="textarea" placeholder="请填写详细地址,最多支持50字符" onKeyUp="$.Huitextarealength(this,50)"></textarea>
+                    <span id="addrssMsg"></span>
+                </div>
+            </div>
+
+            <div class="row cl" id="addOrderButton" style=" margin-top: 20px;">
+                <div class="col-2 col-sm-2 col-offset-3">
+                    <button class="btn btn-block btn-primary size-XL" type="submit">添加订单</button>
+                </div>
+            </div>
+        </div>
+    </div>
+    </form>
+</div>
+
+
+<tfoot>
+<#--<#include "/base/page_util.ftl">-->
+</tfoot>
+
+<#--时间控件-->
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+
+<script>
+
+    $(function () {
+
+        /*初始化产品*/
+        setProduce();
+
+        var provicesId = setAddressPro();
+        var cityId = setAddressCity(provicesId);
+        setAddressDis(cityId);
+
+        /*监听省选择事件*/
+        $(document).on('change', '#province', function() {
+            var proId = $("#province").val();
+            var city = setAddressCity(proId);
+            setAddressDis(city);
+        });
+
+        /*监听市选择事件*/
+        $(document).on('change', '#city', function() {
+            var city = $("#city").val();
+            setAddressDis(city);
+        });
+    })
+
+    $(function (){
+            $("#form-order-add").Validform({
+                tiptype: function (msg, o, cssctl) {
+                    if (o.type == 3) {//失败
+                        layer.msg(msg, {icon: 5, time: 3000});
+                        $(window).scrollTop(o.obj.offset().top - 40);
+                    }
+                },
+                datatype: {//自定义验证类型
+
+                },
+                ignoreHidden: true,
+                tipSweep: true, //若为true,则只在表单提交时验证
+                ajaxPost: true, //异步提交
+                beforeCheck: function (curform) {  //验证通过之前执行的函数
+
+                },
+                beforeSubmit: function (curform) {  //验证通过之后执行的函数
+                    var pro = $("#province").find("option:selected").text();
+                    var city = $("#city").find("option:selected").text();
+                    var dis = $("#district").find("option:selected").text();
+                    var addres = $("#sendAddress").val();
+                    if(addres == null || addres == ""){
+                        layer.msg("未填写详细地址", {icon: 5, time: 3000});
+                        return  false;
+                    }
+                    $("#salesAddressInfo").val(pro + "-" + city + "-" + dis + "-" + addres);
+
+                    var itemList = new Array()
+                    $("#addProduct").find(".input-color-number").each(function(){
+                        var number = $(this).val();
+                        if(number != null && number != ""){
+                            var salesOrderItem = new Object();
+                            salesOrderItem.itemProductId = $(this).parent().find(".input-produce-id").val();
+                            salesOrderItem.itemColorId = $(this).parent().find(".input-color-id").val();
+                            salesOrderItem.itemNum = number;
+                            itemList.push(salesOrderItem);
+                        }
+                    })
+                    $("#itemJson").val(JSON.stringify(itemList));
+                },
+                callback: function (data) {//异步回调函数
+                    if (data) {
+                        var index = layer.alert(data.resultMsg, function () {
+                            if (data.resultCode == 200) {
+                                addSaleOrder(data.returnMsg.orderId);
+                            } else {
+                                layer.close(index);
+                            }
+                            return ;
+                        });
+                    }
+                }
+        })
+    })
+
+    /* 添加订单 */
+    function addSaleOrder(orderId){
+        parent.selectOrderInfo(orderId);
+        parent.layer.close(parent.layer.getFrameIndex(window.name));
+    }
+
+    /*设置省*/
+    function setAddressPro(){
+        var provinceHtml = "";
+        var provices = listProvince();
+        for(var i=0;i<provices.length;i++){
+            provinceHtml += '<option value="'+ provices[i].provinceId +'">'+ provices[i].province +'</option>';
+        }
+        $("#province").html(provinceHtml);
+        return provices[0].provinceId;
+    }
+
+    /*设置市*/
+    function setAddressCity(proId){
+        var cityHtml = ''
+        var city = listCity( proId,"");
+        for(var i=0;i<city.length;i++){
+            cityHtml += '<option value="'+ city[i].cityId +'">'+ city[i].city +'</option>';
+        }
+        $("#city").html(cityHtml);
+        return  city[0].cityId;
+    }
+    /*设置区*/
+    function setAddressDis(cityId){
+        var districtHtml = ''
+        var district = listDistrict(cityId ,"");
+        for(var i=0;i<district.length;i++){
+            districtHtml += '<option value="'+ district[i].districtId +'">'+ district[i].district +'</option>';
+        }
+        $("#district").html(districtHtml);
+    }
+
+    /**
+     * 展示产品
+     * @param orderItemList
+     */
+    function setProduce() {
+        var productList = getProduct() ; //所有产品
+        var html = "";
+        var productTypeNo = 0;
+
+        for(var i=0;i<productList.length;i++) {
+            var product = productList[i];
+            var produceFittings = getProduceFittings(product.productId);  //获取该产品的所有配件
+            var colorList = product.colorList;  //该产品的所有颜色
+
+            var productType = product.productType;
+
+            var colorHtml = '';
+            if(colorList != null && colorList.length >0 ){
+                colorHtml += '<table style="height: 100%;">';
+                for(var j=0;j<colorList.length;j++){
+                    var number = "";
+                    var color = colorList[j];
+//                    for(var k=0;k<orderItemList.length;k++){
+//                        var item = orderItemList[k];
+//                        if(item.itemColorId == color.colorId){
+//                            number = item.itemNum;
+//                        }
+//                    }
+                    var fristInputStyle = "border-top: 1px solid #ddd;";
+                    if(color.colorProductId == product.productId) {
+                        colorHtml += '<tr >' +
+                                '         <td width="85" style="border-left: none;text-align: center;'+ fristInputStyle +'">' + color.colorName + '</td>' +
+                                '         <td width="15" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
+                                '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;" value="'+ number +'" placeholder="数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+
+                }
+                colorHtml += '</table>';
+            }else{
+                colorHtml += '<span>暂无该产品的颜色!<span>';
+            }
+
+            var produceFittingsHtml = '';
+            if(produceFittings != null && produceFittings.length > 0){
+                produceFittingsHtml += '<table style="height: 100%;">';
+                for(var m=0;m<produceFittings.length;m++){
+                    var produceFit = produceFittings[m];
+                    if(produceFit.productId == product.productId) {
+                        var fristInputStyle = "border-top: 1px solid #ddd;";
+                        produceFittingsHtml += '<tr >' +
+                                '         <td width="85" style="border-left: none;text-align: center; '+ fristInputStyle +'">' + produceFit.fittingsName +'</td>' +
+                                '         <td width="15" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
+                                '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+                }
+                produceFittingsHtml += '</table>';
+            }else{
+                produceFittingsHtml += '<span>暂无产品配件!<span>';
+            }
+
+            var produceHtml = '<input type="hidden" value="'+ product.productId +'">' +
+                    '<span>'+  product.productName +'</span>';
+
+            html += ' <tr >' +
+                    '    <td width="80">'+ produceHtml +'</td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    colorHtml +
+                    '   </td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    produceFittingsHtml +
+                    '    </td>' +
+                    '</tr>';
+        }
+
+        $("#addProduct").html(html);
+    }
+
+    /*获取产品*/
+    function getProduct(){
+        var productList;
+        $.ajax({
+            type: "POST",
+            data: {
+            },
+            url: "${path}/admin/customer/select_produce",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    productList = data.returnMsg.productList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return productList;
+    }
+
+    /*获取产品配件*/
+    function getProduceFittings(productId){
+        var produceFittings;
+        $.ajax({
+            type: "get",
+            data: {
+                productId : productId
+            },
+            url: "${path}/admin/customer/select_produce_fittings",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    produceFittings = data.returnMsg.produceFittingsList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return produceFittings;
+    }
+</script>
+</body>
+</html>

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

@@ -45,6 +45,13 @@
         .table-bg th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
         .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
+        .input-produce{height: 25px;line-height: 25px}
+        .color-div{height: 30px;}
+        .table-td-color{}
+        .msg-phone{
+            height: 35px;
+            line-height: 35px;
+        }
     </style>
 </head>
 <body>
@@ -52,6 +59,11 @@
     <div class="text-c">
         <form action="" method="post">
             <div class="row cl">
+
+                <div class="formControls col-1 col-sm-1" style="margin-right: 30px;">
+                    <button type="button" class="btn btn-primary" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name="" onclick="addOrder()">添加订单</button>
+                </div>
+
                 <div class="formControls col-2 col-sm-2" > <span class="select-box">
                     <select name="" class="select" id="companyId">
                          <option value="">销售公司</option>
@@ -89,7 +101,7 @@
                     </select>
                     </span>
                 </div>
-                <div class="formControls col-3 col-sm-3" >
+                <div class="formControls col-2 col-sm-2" >
                     <input type="text" class="input-text" value="" placeholder="订单编号" id="salesId" name="">
                 </div>
             </div>
@@ -146,11 +158,18 @@
         </tbody>
     </table>
     </div>
+
 </div>
+
+
+
 <tfoot>
 <#--<#include "/base/page_util.ftl">-->
 </tfoot>
 
+<#--时间控件-->
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+
 <script>
 
     $(function () {
@@ -164,6 +183,8 @@
 
         /*初始化  搜索订单  */
         searchOrder();
+
+
     })
 
     /*获取销售公司下的所有店铺*/
@@ -198,13 +219,16 @@
      * 搜索订单
      */
     function searchOrder(){
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+
         var salesCompanyId = convertUndefinedToEmpty($("#companyId").val());
         var salesStoreId = convertUndefinedToEmpty($("#storeId").val());
         var salesStatus = convertUndefinedToEmpty($("#salesStatus").val());
         var salesId = convertUndefinedToEmpty($("#salesId").val());
         var salesAddressName =convertUndefinedToEmpty($("#salesAddressName").val());
         var salesAddressTel = convertUndefinedToEmpty($("#salesAddressTel").val());
-        var html = "";
         $.ajax({
             type: "POST",
             data: {
@@ -218,6 +242,7 @@
             url: "${path}/admin/customer/select_salesOrder",
             async: true,
             success: function(data){
+                var html = "";
                 if (data.returnCode == 200) {
                     for(var i=0;i<data.returnMsg.salesOrderList.length;i++){
                         var salesOrder = data.returnMsg.salesOrderList[i];
@@ -249,8 +274,10 @@
                     html = '';
                 }
                 $("#orderAll").html(html);
+                layer.close(index);
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.close(index);
             }
         });
     }
@@ -262,6 +289,13 @@
         parent.setSelectOrder(orderId);
         parent.layer.close(parent.layer.getFrameIndex(window.name));
     }
+
+    /**
+     * 打开添加订单的页面
+     */
+    function addOrder(){
+        layer_show("添加订单信息","${path}/admin/customer/add_order","900","380");
+    }
 </script>
 </body>
 </html>

+ 14 - 0
watero-rst-web/src/main/webapp/common/js/common/common.js

@@ -140,6 +140,20 @@ function listDistrict(cityId,districtName){
     });
     return district;
 }
+
+/**
+ * 获取当前节点,将当前节点的val值除了数字其他的删掉
+ * @param node
+ */
+function keyFun(node){
+    var c=$(node);
+    if(/[^\d]/.test(c.val())){//替换非数字字符
+        var temp_amount=c.val().replace(/[^\d]/g,'');
+        $(node).val(temp_amount);
+    }
+}
+
+
 /**物流名称替换**/
 function replace(code) {
     var name = null;