Browse Source

修改了换新和维修的页面

liuzhiwei 7 years ago
parent
commit
99c4bf407d
43 changed files with 1452 additions and 741 deletions
  1. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintSignclosedInfo.java
  2. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Reissue.java
  3. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Renewed.java
  4. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Repair.java
  5. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java
  6. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java
  7. 8 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ReissueService.java
  8. 6 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RenewedService.java
  9. 9 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RepairService.java
  10. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/EfastOrderService.java
  11. 40 17
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  12. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ReissueServiceImpl.java
  13. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RenewedServiceImpl.java
  14. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RepairServiceImpl.java
  15. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java
  16. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ReissueMapper.java
  17. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java
  18. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RepairMapper.java
  19. 4 3
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintDetectInfoMapper.xml
  20. 3 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedInfoMapper.xml
  21. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedProductInfoMapper.xml
  22. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml
  23. 15 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml
  24. 16 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml
  25. 25 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml
  26. 57 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/EfastOrderServiceImpl.java
  27. 12 0
      watero-rst-service/src/main/java/com/iamberry/rst/util/SmsConfig.java
  28. 29 27
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  29. 4 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminDetectController.java
  30. 16 12
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AppComplaintQuestionInfoController.java
  31. 215 9
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java
  32. 61 0
      watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java
  33. 53 43
      watero-rst-web/src/main/java/com/iamberry/rst/utils/test.java
  34. 10 6
      watero-rst-web/src/main/resources/platform.properties
  35. 261 109
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl
  36. 0 395
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/order_add.ftl
  37. 434 99
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/order_list.ftl
  38. 17 8
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_list.ftl
  39. 9 1
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/maintenance/maintenance_list.ftl
  40. 7 1
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/signclosed/signclosed_list.ftl
  41. 3 3
      watero-rst-web/src/main/webapp/WEB-INF/views/wap/cm/request_message.ftl
  42. 2 2
      watero-rst-web/src/main/webapp/WEB-INF/views/wap/cm/send_message.ftl
  43. 15 3
      watero-rst-web/src/main/webapp/common/js/common/common.js

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

@@ -38,6 +38,7 @@ public class ComplaintSignclosedInfo implements Serializable {
     private Date signclosedCreateTime;//创建时间
     private Date signclosedUpdateTime;//修改时间
 
+    private String customerIdDescribe;//客诉标题
     private List<AwaitingSignclosedProductInfo> awaitingSignclosedProductInfoList = new ArrayList<AwaitingSignclosedProductInfo>();	//待签收实体类
     private List<SignclosedProductInfo> signclosedProductInfoList = new ArrayList<SignclosedProductInfo>();	//签收实体类
     private String provincesName;//寄件地址(省)
@@ -257,4 +258,12 @@ public class ComplaintSignclosedInfo implements Serializable {
     public void setCityName(String cityName) {
         this.cityName = cityName;
     }
+
+    public String getCustomerIdDescribe() {
+        return customerIdDescribe;
+    }
+
+    public void setCustomerIdDescribe(String customerIdDescribe) {
+        this.customerIdDescribe = customerIdDescribe;
+    }
 }

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

@@ -53,6 +53,7 @@ public class Reissue  implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesPayTime;                  //支付时间
+    private String salesDealCode;               //交易号
 
     private List<ClosedFitting> closedFittings = new ArrayList<ClosedFitting>();//寄回配件集合
     private List<ClosedProdcue> closedProdcues = new ArrayList<ClosedProdcue>();//机会产品集合
@@ -224,4 +225,12 @@ public class Reissue  implements Serializable {
     public void setReissueUpdateTime(Date reissueUpdateTime) {
         this.reissueUpdateTime = reissueUpdateTime;
     }
+
+    public String getSalesDealCode() {
+        return salesDealCode;
+    }
+
+    public void setSalesDealCode(String salesDealCode) {
+        this.salesDealCode = salesDealCode;
+    }
 }

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

@@ -88,6 +88,8 @@ public class Renewed  implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesPayTime;                  //支付时间
+    private String salesDealCode;               //交易号
+
     private List<ClosedFitting> closedFittings = new ArrayList<ClosedFitting>();//寄回配件集合
 
     private List<ClosedProdcue> closedProdcues = new ArrayList<ClosedProdcue>();//机会产品集合
@@ -443,4 +445,12 @@ public class Renewed  implements Serializable {
     public void setRenewedUpdateTime(Date renewedUpdateTime) {
         this.renewedUpdateTime = renewedUpdateTime;
     }
+
+    public String getSalesDealCode() {
+        return salesDealCode;
+    }
+
+    public void setSalesDealCode(String salesDealCode) {
+        this.salesDealCode = salesDealCode;
+    }
 }

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

@@ -88,6 +88,7 @@ public class Repair implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesPayTime;                  //支付时间
+    private String salesDealCode;               //交易号
     private List<ClosedFitting> closedFittings = new ArrayList<ClosedFitting>();//寄回配件集合
 
     private List<ClosedProdcue> closedProdcues = new ArrayList<ClosedProdcue>();//机会产品集合
@@ -443,4 +444,12 @@ public class Repair implements Serializable {
     public void setRepairUpdateTime(Date repairUpdateTime) {
         this.repairUpdateTime = repairUpdateTime;
     }
+
+    public String getSalesDealCode() {
+        return salesDealCode;
+    }
+
+    public void setSalesDealCode(String salesDealCode) {
+        this.salesDealCode = salesDealCode;
+    }
 }

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java

@@ -26,6 +26,7 @@ public class EfastOrder implements Serializable{
     private String orderProvince;               // 省份
     private String orderCity;                   // 城市
     private String orderArea;                   // 区域
+    private String repairSendMergeAddress;      //省市区
     private String orderAddress;                //收货地址
     private Integer orderStatus;                //订单状态
 
@@ -247,4 +248,12 @@ public class EfastOrder implements Serializable{
     public void setOid(Integer oid) {
         this.oid = oid;
     }
+
+    public String getRepairSendMergeAddress() {
+        return repairSendMergeAddress;
+    }
+
+    public void setRepairSendMergeAddress(String repairSendMergeAddress) {
+        this.repairSendMergeAddress = repairSendMergeAddress;
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.*;
+import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.page.PagedResult;
 
 import java.util.List;
@@ -95,4 +96,10 @@ public interface CustomerService {
      * @return
      */
     CustomerCommon selectProdcueAndFitting(CustomerCommon customerCommon, int isSolve);
+
+    /**
+     *  根据客诉id查询商品类型表
+     * @return
+     */
+    ProductType getcompanyAffiliation(Integer customerId);
 }

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

@@ -2,6 +2,8 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.Reissue;
 
+import java.util.List;
+
 /**
  * Created by Administrator on 2017/11/9.
  */
@@ -13,4 +15,10 @@ public interface ReissueService {
      * @return
      */
     Integer updateReissueInfo(Reissue record);
+    /**
+     * 查询售后补发集合 同步efast
+     * @param reissue
+     * @return
+     */
+    List<Reissue> listSynchronizingReissue(Reissue reissue);
 }

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RenewedService.java

@@ -24,4 +24,10 @@ public interface RenewedService {
      * @return
      */
     Integer updateRenewedInfo(Renewed record, String closedProducts, String closedFittings);
+
+    /**
+     * 获取所有需要同步的换新数据
+     * @return
+     */
+    List<Renewed> listSynchronizingRenewed(Renewed renewed);
 }

+ 9 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RepairService.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.Repair;
 
+import java.util.List;
+
 /**
  * 维修Service
  * Created by liuzhiwei on 2017/11/8.
@@ -14,4 +16,11 @@ public interface RepairService {
      * @return
      */
     Integer updateRepairInfo(Repair repair, String closedProducts, String closedFittings);
+
+    /**
+     * 查询售后维修需要同步订单的数据集合
+     * @param repair
+     * @return
+     */
+    List<Repair> listSynchronizingRepair(Repair repair);
 }

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/EfastOrderService.java

@@ -70,6 +70,16 @@ public interface EfastOrderService {
     JSONObject getOrderFormEfast(String orderid) throws Exception;
 
     /**
+     * 获取百胜订单信息 同步到系统
+     * @param orderid
+     * @return
+     * @throws Exception
+     */
+    EfastOrder getFromEfastOrderInfo(String orderid) throws Exception;
+
+
+
+    /**
      * 根据百胜支付类型获取系统对应支付类型
      * @param payName
      * @return

+ 40 - 17
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -131,6 +131,9 @@ public class CustomerServiceImpl implements CustomerService {
             customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
             customerCommon.setTransactionNumber(customerInfo.getTransactionNumber());   //外部交易号
 
+            customerCommon.setRelationIsTransfer(0);    //是否已转账邮费  0:不需要
+            customerCommon.setRelationBackPostage(0);   //邮费默认为0
+
             /*  初始化产品类型,名称,配件名称 */
             this.setName(customerCommon);
 
@@ -141,7 +144,7 @@ public class CustomerServiceImpl implements CustomerService {
             switch (customerInfo.getCustomerIsSolve()) {  //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
                 case 3: //换新
 
-                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder);    //原订单生成退单
+                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder,2);    //原订单生成退单
 
                     map = this.sendEfastOrder(customerCommon,salesOrder);  //换新需要向Efast推送一条换新发货的订单
                     if(map.get("status") == 1){
@@ -157,7 +160,7 @@ public class CustomerServiceImpl implements CustomerService {
                     break;
                 case 4: //维修
 
-                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder);    //原订单生成退单
+                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder,2);    //原订单生成退单
 
                     map = this.sendEfastOrder(customerCommon,salesOrder);  //维修需要向Efast推送一条维修发货的订单
                     if(map.get("status") == 1){
@@ -181,12 +184,18 @@ public class CustomerServiceImpl implements CustomerService {
                     }
                     break;
                 case 6: //退货
+
+                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder,3);    //原订单生成退单
+
                     complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
                     this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
                     complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
                     this.saveComplaintDetectInfo(complaintDetectInfo,customerCommon);   //创建品检
                     break;
                 case 7: //无理由退货
+
+                    isReturn = this.chargebackEfastOrder(customerCommon,salesOrder,3);    //原订单生成退单
+
                     complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
                     this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
                     complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
@@ -250,7 +259,7 @@ public class CustomerServiceImpl implements CustomerService {
 
 
     /**
-     * 初始化
+     * 产品配件初始化
      * @param cc
      */
     private void setName(CustomerCommon cc){
@@ -343,21 +352,25 @@ public class CustomerServiceImpl implements CustomerService {
         awaitingSignclosedProductInfo.setSignclosedProductType(1); //类型为产品
         for(int i=0 ;i< customerCommon.getClosedProdcues().size();i++){
             ClosedProdcue closedProdcue = customerCommon.getClosedProdcues().get(i);
-            awaitingSignclosedProductInfo.setProductNum(closedProdcue.getClosedProdcueNumber());
-            awaitingSignclosedProductInfo.setSignclosedProductId(closedProdcue.getProductId());         //产品id
-            awaitingSignclosedProductInfo.setSignclosedProductColor(closedProdcue.getColorId());        //颜色id
-            awaitingSignclosedProductInfo.setProductName(closedProdcue.getClosedProductName());         //产品名称
-            awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
+            for(int k=0;k<closedProdcue.getClosedProdcueNumber();k++){
+                awaitingSignclosedProductInfo.setProductNum(1);
+                awaitingSignclosedProductInfo.setSignclosedProductId(closedProdcue.getProductId());         //产品id
+                awaitingSignclosedProductInfo.setSignclosedProductColor(closedProdcue.getColorId());        //颜色id
+                awaitingSignclosedProductInfo.setProductName(closedProdcue.getClosedProductName());         //产品名称
+                awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
+            }
         }
 
         awaitingSignclosedProductInfo.setSignclosedProductType(2);  //类型为配件
         for(int i=0 ;i< customerCommon.getClosedFittings().size();i++){
             ClosedFitting closedFitting = customerCommon.getClosedFittings().get(i);
-            awaitingSignclosedProductInfo.setProductNum(closedFitting.getClosedFittingNumber());
-            awaitingSignclosedProductInfo.setSignclosedProductId(closedFitting.getFittingsId());         //配件id
-            awaitingSignclosedProductInfo.setSignclosedProductColor(null);
-            awaitingSignclosedProductInfo.setProductName(closedFitting.getFittingName());       //配件名称
-            awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
+            for(int k=0;k<closedFitting.getClosedFittingNumber();k++){
+                awaitingSignclosedProductInfo.setProductNum(1);
+                awaitingSignclosedProductInfo.setSignclosedProductId(closedFitting.getFittingsId());         //配件id
+                awaitingSignclosedProductInfo.setSignclosedProductColor(null);
+                awaitingSignclosedProductInfo.setProductName(closedFitting.getFittingName());       //配件名称
+                awaitingSignclosedProductInfoArrayList.add(awaitingSignclosedProductInfo);
+            }
         }
 
         flag = complaintSignclosedProductInfoMapper.insertList(awaitingSignclosedProductInfoArrayList);
@@ -451,7 +464,10 @@ public class CustomerServiceImpl implements CustomerService {
             status = 0;
         }
         map.put("status",status);
-        map.put("EfastOrderId",oList.get(0).getOrderId());
+        if(oList != null && oList.size() > 0){
+            map.put("EfastOrderId",oList.get(0).getOrderId());
+            logger.info("换新,维修 ,补发向Efast 推送订单,订单号为:" + oList.get(0).getOrderId());
+        }
         return map;
     }
 
@@ -544,8 +560,10 @@ public class CustomerServiceImpl implements CustomerService {
         if(oList == null || oList.size() < 1){
             status = 0;
         }
+        if(oList != null && oList.size() > 0){
+            map.put("EfastOrderId",oList.get(0).getOrderId());
+        }
         map.put("status",status);
-        map.put("EfastOrderId",oList.get(0).getOrderId());
         return map;
     }
 
@@ -557,11 +575,11 @@ public class CustomerServiceImpl implements CustomerService {
      * @throws Exception
      */
     @Transactional
-    boolean chargebackEfastOrder(CustomerCommon customerCommon, SalesOrder salesOrder) throws Exception{
+    boolean chargebackEfastOrder(CustomerCommon customerCommon, SalesOrder salesOrder,Integer status) throws Exception{
 
         SalesOrder order = new SalesOrder();
         order.setSalesId(salesOrder.getSalesId());
-        order.setSalesStatus(8);
+        order.setSalesOrderStatus(status); //换货状态
         Integer flag = salesOrderMapper.updateSalesOrder(order);
 //        if(flag < 0){
 //            throw new Exception("退货失败");
@@ -877,6 +895,11 @@ public class CustomerServiceImpl implements CustomerService {
     }
 
     @Override
+    public ProductType getcompanyAffiliation(Integer customerId) {
+        return customerInfoMapper.getcompanyAffiliation(customerId);
+    }
+
+    @Override
     public BackGoods getBackGoods(BackGoods backGoods) {
         //获取退货集合
         List<BackGoods> backList = backGoodsMapper.listBackGoods(backGoods);

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ReissueServiceImpl.java

@@ -6,6 +6,8 @@ import com.iamberry.rst.service.cm.mapper.ReissueMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 补寄
  * Created by liuzhiwei on 2017/11/9.
@@ -20,4 +22,9 @@ public class ReissueServiceImpl implements ReissueService {
     public Integer updateReissueInfo(Reissue record) {
         return reissueMapper.updateReissueInfo(record);
     }
+
+    @Override
+    public List<Reissue> listSynchronizingReissue(Reissue reissue) {
+        return reissueMapper.listSynchronizingReissue(reissue);
+    }
 }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RenewedServiceImpl.java

@@ -90,4 +90,9 @@ public class RenewedServiceImpl implements RenewedService {
             return 0;
         }
     }
+
+    @Override
+    public List<Renewed> listSynchronizingRenewed(Renewed renewed) {
+        return renewedMapper.listSynchronizingRenewed(renewed);
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RepairServiceImpl.java

@@ -15,6 +15,8 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 
+import java.util.List;
+
 /**
  * 维修Service
  * Created by liuzhiwei on 2017/11/8.
@@ -87,4 +89,9 @@ public class RepairServiceImpl implements RepairService {
             return 0;
         }
     }
+
+    @Override
+    public List<Repair> listSynchronizingRepair(Repair repair) {
+        return repairMapper.listSynchronizingRepair(repair);
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java

@@ -1,6 +1,7 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.CustomerInfo;
+import com.iamberry.rst.core.order.ProductType;
 
 import java.util.List;
 
@@ -31,4 +32,10 @@ public interface CustomerInfoMapper {
      * @return
      */
     List<CustomerInfo> listCustomer(CustomerInfo customerInfo);
+
+    /**
+     *  根据客诉id查询商品类型表
+     * @return
+     */
+    ProductType getcompanyAffiliation(Integer customerId);
 }

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ReissueMapper.java

@@ -28,4 +28,12 @@ public interface ReissueMapper {
      * @return
      */
     List<Reissue> listReissue(Reissue reissue);
+    /**
+     * 查询售后补发集合 同步efast
+     * @param reissue
+     * @return
+     */
+    List<Reissue> listSynchronizingReissue(Reissue reissue);
+
+
 }

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java

@@ -37,4 +37,10 @@ public interface RenewedMapper {
      * @return
      */
     List<ClosedFitting> listClosedFitting(ClosedFitting closedFitting);
+    /**
+     * 获取所有需要同步的换新数据
+     * @return
+     */
+    List<Renewed> listSynchronizingRenewed(Renewed renewed);
+
 }

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RepairMapper.java

@@ -35,4 +35,10 @@ public interface RepairMapper {
      * @return
      */
     Integer updateRepairInfo(Repair repair);
+    /**
+     * 查询售后维修需要同步订单的数据集合
+     * @param repair
+     * @return
+     */
+    List<Repair> listSynchronizingRepair(Repair repair);
 }

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

@@ -60,11 +60,12 @@
       cd.detect_is_maintenance detectIsMaintenance,
       cd.detect_date detectDate,
       cd.product_color_id productColorId,
-      ci.customer_question_title questionTitle,
+      qd.describe_title questionTitle,
       pi.product_name productName,
       cd.maintenance_results maintenanceResults
-    from tb_rst_complaint_detect cd LEFT JOIN tb_rst_customer_info ci ON cd.customer_id = ci.customer_id
+    from tb_rst_complaint_detect cd
         LEFT JOIN tb_rst_product_info pi ON cd.product_id = pi.product_id
+        LEFT JOIN tb_rst_question_describe qd on cd.customer_id = qd.customer_id
     <where>
       <if test="detectProductNumber != null and detectProductNumber != ''" >
        AND cd.detect_product_number = #{detectProductNumber,jdbcType=VARCHAR}
@@ -94,7 +95,7 @@
         AND cd.detect_revolution_produced = #{detectRevolutionProduced,jdbcType=BIT}
       </if>
       <if test="questionTitle != null and questionTitle != ''" >
-        AND ci.customer_question_title like CONCAT('%',#{questionTitle},'%')
+        AND qd.describe_title like CONCAT('%',#{questionTitle},'%')
       </if>
       <if test="detectIsMaintenance != null and detectIsMaintenance != ''" >
         AND cd.detect_is_maintenance = #{detectIsMaintenance,jdbcType=BIT}

+ 3 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedInfoMapper.xml

@@ -134,11 +134,13 @@
     cs.signclosed_create_time,
     cs.signclosed_update_time,
     ap.province provincesName,
-    ac.city cityName
+    ac.city cityName,
+    qd.describe_title customerIdDescribe
     FROM
     tb_rst_complaint_signclosed cs
     LEFT JOIN tb_rst_address_province ap ON cs.signclosed_addr_provinces = ap.province_id
     LEFT JOIN tb_rst_address_city ac ON cs.signclosed_addr_city = ac.city_id
+    LEFT JOIN tb_rst_question_describe qd on cs.signclosed_customer_id = qd.customer_id
     <where>
       <if test="signclosedSendName != null and signclosedSendName != ''" >
         cs.signclosed_send_name = #{signclosedSendName}

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedProductInfoMapper.xml

@@ -60,12 +60,12 @@
   <insert id="insertList" parameterType="SignclosedProductInfo" >
     insert into tb_rst_complaint_awaiting_signclosed_product
       (
-          signclosed_id, product_name,product_num,signclosed_product_type,signclosed_product_id,signclosed_product_color,machine_no
+          signclosed_id, product_name,product_num,signclosed_product_type,signclosed_product_id,signclosed_product_color
       )
     values
     <foreach collection="list" item="node" index="index" separator="," open="" close="">
       (
-        #{node.signclosedId}, #{node.productName},#{node.productNum},#{node.signclosedProductType}, #{node.signclosedProductId}, #{node.signclosedProductColor}, #{node.machineNo}
+        #{node.signclosedId}, #{node.productName},#{node.productNum},#{node.signclosedProductType}, #{node.signclosedProductId}, #{node.signclosedProductColor}
       )
     </foreach>
   </insert>

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml

@@ -180,4 +180,14 @@
     </set>
     where customer_id = #{customerId}
   </update>
+  
+  <select id="getcompanyAffiliation" parameterType="Integer" resultType="ProductType">
+    SELECT
+        pt.*
+    FROM
+        tb_rst_product_type pt
+    LEFT JOIN tb_rst_customer_info ci ON pt.type_id = ci.type_id
+    where
+    ci.customer_id = #{customerId}
+  </select>
 </mapper>

+ 15 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml

@@ -267,4 +267,19 @@
       reissue_update_time = #{reissueUpdateTime,jdbcType=TIMESTAMP}
     where reissue_id = #{reissueId,jdbcType=INTEGER}
   </update>
+
+  <!-- 查询售后补发需要同步订单的数据集合 -->
+  <select id="listSynchronizingReissue" resultType="Reissue" parameterType="Reissue">
+    select
+    r.*,
+    o.sales_deal_code salesDealCode
+    from
+    tb_rst_reissue r
+    LEFT JOIN tb_rst_sales_order_info o ON r.reissue_back_efast_order_id = o.sales_orderId
+    <where>
+      <if test="reissueSendStatus != null and reissueSendStatus != ''">
+        and reissue_send_status = #{reissueSendStatus}
+      </if>
+    </where>
+  </select>
 </mapper>

+ 16 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml

@@ -225,4 +225,20 @@
     </set>
     where renewed_id = #{renewedId}
   </update>
+
+
+  <!-- 查询售后换新需要同步订单的数据集合 -->
+  <select id="listSynchronizingRenewed" resultType="Renewed" parameterType="Renewed">
+    select
+    r.*,
+    o.sales_deal_code salesDealCode
+    from
+    tb_rst_renewed r
+    LEFT JOIN tb_rst_sales_order_info o ON r.renewed_back_efast_order_id = o.sales_orderId
+    <where>
+      <if test="renewedSendStatus != null and renewedSendStatus != ''">
+        and renewed_send_status = #{renewedSendStatus}
+      </if>
+    </where>
+  </select>
 </mapper>

+ 25 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml

@@ -61,6 +61,9 @@
       <if test="customerId != null and customerId != ''">
         and customer_id = #{customerId}
       </if>
+      <if test="repairSendStatus != null and repairSendStatus != ''">
+        and repair_send_status = #{repairSendStatus}
+      </if>
     </where>
   </select>
 
@@ -244,4 +247,26 @@
       repair_update_time = #{repairUpdateTime,jdbcType=TIMESTAMP}
     where repair_id = #{repairId,jdbcType=INTEGER}
   </update>
+
+
+  <!-- 查询售后维修需要同步订单的数据集合 -->
+  <select id="listSynchronizingRepair" resultType="Repair" parameterType="Repair">
+    select
+    r.*,
+    o.sales_deal_code salesDealCode
+    from
+    tb_rst_repair r
+    LEFT JOIN tb_rst_sales_order_info o ON r.repair_back_efast_order_id = o.sales_orderId
+    <where>
+      <if test="repairState != null">
+        repair_state = #{repairState}
+      </if>
+      <if test="customerId != null and customerId != ''">
+        and customer_id = #{customerId}
+      </if>
+      <if test="repairSendStatus != null and repairSendStatus != ''">
+        and repair_send_status = #{repairSendStatus}
+      </if>
+    </where>
+  </select>
 </mapper>

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

@@ -353,6 +353,63 @@ public class EfastOrderServiceImpl implements EfastOrderService {
         }
     }
 
+    /**获取efast详细信息同步到系统**/
+
+    @Override
+    public EfastOrder getFromEfastOrderInfo(String orderid) throws Exception{
+        if(StringUtils.isEmpty(orderid)) return null;
+
+        Map<String, String> requestData = getRequestData(EFAST_ORDER_SELECT);
+        requestData.put("oid", orderid);
+        requestData.put("feilds","order_status,shipping_status,consignee,address,mobile,province,city,district,invoice_no,shipping_name");   //1.order_status 订单状态:0(未确认)1(确认)2(挂起)3(作废)     2.shipping_status发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+
+        try {
+            String result = HttpClient431Util.doGet(requestData, EFAST_BASE_URL);
+            result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+            Matcher m = p.matcher(result);
+            if (m.find()) {
+                result = m.replaceAll("");
+            }
+            logger.info("rst-推送百胜订单号-->>" + orderid + ",百胜返回信息-->" + result);
+            // parse JSON String to Object
+            JSONObject jsonObject = JSONObject.fromObject(result);
+            JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
+            // 发货状态 : shipping_status
+            String shoppingStatus = respData.getString("shipping_status");
+            String shoppingOrderId = respData.getString("order_id");
+            String consignee = respData.getString("consignee");//收货人
+            String address = respData.getString("address");//收货地址
+            String mobile = respData.getString("mobile");//手机号
+            String province = respData.getString("province");//省
+            String city = respData.getString("city");//市
+            String district = respData.getString("district");//区
+            String invoice_no = respData.getString("invoice_no");//快递单号
+            String shipping_name = respData.getString("shipping_name");//快递公司
+
+            if(StringUtils.isNotEmpty(shoppingStatus)){
+                EfastOrder efastOrder = new EfastOrder();
+                efastOrder.setOrderStatus(Integer.parseInt(shoppingStatus));
+                efastOrder.setOrderId(shoppingOrderId);
+                efastOrder.setOrderAddressName(consignee);
+                efastOrder.setOrderAddress(address);
+                efastOrder.setOrderAddressTel(mobile);
+                efastOrder.setOrderProvince(province);
+                efastOrder.setOrderCity(city);
+                efastOrder.setOrderArea(district);
+                efastOrder.setOrderPostNum(invoice_no);
+                efastOrder.setOrderPostFirm(shipping_name);
+                efastOrder.setRepairSendMergeAddress(province+"-"+city+"-"+district);
+                return efastOrder;
+            }
+            logger.error("rst-获取百胜出错,订单号-->>" + orderid + ",百胜返回信息-->" + result);
+            throw new Exception(respData.getString("msg"));
+        } catch (Exception e) {
+            logger.error("rst-获取百胜出错,订单号-->>" + orderid + ",catch");
+            throw e;
+        }
+    }
+
     @Override
     public JSONObject getOrderFormEfast(String orderid) throws Exception {
         if(StringUtils.isEmpty(orderid)) return null;

+ 12 - 0
watero-rst-service/src/main/java/com/iamberry/rst/util/SmsConfig.java

@@ -42,6 +42,15 @@ public class SmsConfig {
     /* 发送问题回复  -- 优尼雅 */
     public static String SEND_PRODUCT_SEND_YULIA="";
 
+    /* 发送发货提醒  -- 美国watero */
+    public static String RELATION_SEND_WATERO="";
+    /* 发送发货提醒  -- 上朵 */
+    public static String RELATION_SEND_SHANGDUO="";
+    /* 发送发货提醒  -- 优尼雅 */
+    public static String RELATION_SEND_YULIA="";
+
+
+
 
 
     static {
@@ -69,6 +78,9 @@ public class SmsConfig {
             SEND_PRODUCT_SEND_WATERO=pro.getProperty("SEND_PRODUCT_SEND_WATERO");
             SEND_PRODUCT_SEND_SHANGDUO=pro.getProperty("SEND_PRODUCT_SEND_SHANGDUO");
             SEND_PRODUCT_SEND_YULIA=pro.getProperty("SEND_PRODUCT_SEND_YULIA");
+            RELATION_SEND_WATERO=pro.getProperty("RELATION_SEND_WATERO");
+            RELATION_SEND_SHANGDUO=pro.getProperty("RELATION_SEND_SHANGDUO");
+            RELATION_SEND_YULIA=pro.getProperty("RELATION_SEND_YULIA");
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 29 - 27
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -188,13 +188,10 @@ public class AdminCustomerController {
         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);
@@ -204,6 +201,15 @@ public class AdminCustomerController {
         salesOrder.setSalesRemainDeposit(0);
         salesOrder.setSalesType(1);
 
+        salesOrder.setSalesStatus(0);//确认状态:0(未确认)1(确认)2(挂起)3(作废)
+        salesOrder.setSalesShippingStatus(0);    //发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+        salesOrder.setSalesPayStatus(2);   //已付款
+        salesOrder.setSalesProcessStatus(0);  //单据状态:0(正常单)1(问题单)
+        salesOrder.setSalesIsSend(0);        //0:否 1:是  是否通知配货
+        salesOrder.setSalesIsLocked(0); //是否锁定 0:否 1:是
+        salesOrder.setSalesIsSeparate(0);   //是否缺货  0:否 1:是
+        salesOrder.setSalesShippingFee(0); //邮费
+
         Integer adminId = AdminUtils.getLoginAdminId();
         String orderCode = OrderNoUtil.createOrderCode(adminId);
         salesOrder.setSalesDealCode(orderCode);
@@ -225,8 +231,6 @@ public class AdminCustomerController {
     }
 
 
-
-
     /**
      * 获取店铺集合
      *
@@ -631,49 +635,49 @@ public class AdminCustomerController {
             return new ResponseJson(500, "未获取到产品类型!", 500);
         }
 
+        if(complaintQuestionInfo.getQuestionId() == null){
+            return new ResponseJson(500, "未获取到问题信息或邮寄信息!", 500);
+        }
+
+        flag =  complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
+        if (flag < 1) {
+            return new ResponseJson(500, "问题修改失败!", 500);
+        }
+
         String con = "";
         if(type != null && !"".equals(type)){
-            if( "p".equals(type)){
-                url += "/problem?questionId="+complaintQuestionInfo.getQuestionId();
-
+            if( "p".equals(type)){ //problem" 问题处理;  mailAddress:邮寄地址;
+                url += "/"+complaintQuestionInfo.getQuestionId();
                 switch (typeCompany){
                     case 1:
-                        con = SmsConfig.SEND_PRODUCT_SMS_WATERO;
+                        con = SmsConfig.SEND_PRODUCT_SEND_WATERO;
                         break;
                     case 2:
-                        con = SmsConfig.SEND_PRODUCT_SMS_SHANGDUO;
+                        con = SmsConfig.SEND_PRODUCT_SEND_SHANGDUO;
                         break;
                     case 3:
-                        con = SmsConfig.SEND_PRODUCT_SMS_YULIA;
+                        con = SmsConfig.SEND_PRODUCT_SEND_YULIA;
                         break;
                 }
-
             }else if( "m".equals(type)){
                 complaintQuestionInfo.setQuestionName(null);
-                url += "/address";
-
+                url += "/5";
                 switch (typeCompany){
                     case 1:
-                        con = SmsConfig.SEND_PRODUCT_SEND_WATERO;
+                        con = SmsConfig.SEND_PRODUCT_SMS_WATERO;
                         break;
                     case 2:
-                        con = SmsConfig.SEND_PRODUCT_SEND_SHANGDUO;
+                        con = SmsConfig.SEND_PRODUCT_SMS_SHANGDUO;
                         break;
                     case 3:
-                        con = SmsConfig.SEND_PRODUCT_SEND_YULIA;
+                        con = SmsConfig.SEND_PRODUCT_SMS_YULIA;
                         break;
                 }
-
             }
         }
 
-        logger.info("发送短信url地址:" + url);
-
-        flag =  complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
-        if (flag < 1) {
-            return new ResponseJson(500, "问题修改失败!", 500);
-        }
         String text = MessageFormat.format(con, url);
+        logger.info("给 "+ phone +" 手机用户发送短信:" + text );
         String result = smsService.sendOtherCMS(phone, text);
 
         if("SUCCESS".equals(result)){
@@ -681,8 +685,6 @@ public class AdminCustomerController {
         }else{
             return new ResponseJson(200, "发送短信失败", 200);
         }
-
-
     }
 
     /**

+ 4 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminDetectController.java

@@ -86,6 +86,10 @@ public class AdminDetectController {
         StringBuilder url = new StringBuilder("/admin/detect/select_detect_list?pageSize=" + pageSize);
 
         // 请求参数
+        if (StringUtils.isNotEmpty(detectInfo.getQuestionTitle())) {
+            url.append("&questionTitle=").append(detectInfo.getQuestionTitle());
+            mv.addObject("questionTitle",detectInfo.getQuestionTitle());
+        }
         if (StringUtils.isNotEmpty(detectInfo.getDetectPhenomenon())) {
             url.append("&detectPhenomenon=").append(detectInfo.getDetectPhenomenon());
             mv.addObject("detectPhenomenon",detectInfo.getDetectPhenomenon());

+ 16 - 12
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AppComplaintQuestionInfoController.java

@@ -5,6 +5,7 @@ import com.iamberry.rst.faces.cm.ComplaintQuestionInfoService;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
@@ -16,7 +17,6 @@ import javax.servlet.http.HttpServletRequest;
  * 问题
  */
 @Controller
-@RequestMapping("/QA")
 public class AppComplaintQuestionInfoController {
 
     /**
@@ -36,12 +36,16 @@ public class AppComplaintQuestionInfoController {
      * @return
      * @throws Exception
      */
-    @RequestMapping("/problem")
-    public ModelAndView problem(HttpServletRequest request) throws Exception {
-        ModelAndView mv = new ModelAndView("wap/cm/request_message");
-        String questionId = request.getParameter("questionId");
-        mv.addObject("questionId", questionId);
-        return mv;
+    @RequestMapping("/QA/{id}")
+    public ModelAndView problem( @PathVariable("id") Integer id, HttpServletRequest request) throws Exception {
+        if(id == backOutQuestionId){
+            ModelAndView mv = new ModelAndView("wap/cm/send_message");
+            return mv;
+        }else{
+            ModelAndView mv = new ModelAndView("wap/cm/request_message");
+            mv.addObject("questionId", id);
+            return mv;
+        }
     }
 
     /**
@@ -51,11 +55,11 @@ public class AppComplaintQuestionInfoController {
      * @return
      * @throws Exception
      */
-    @RequestMapping("/address")
-    public ModelAndView adress(HttpServletRequest request) throws Exception {
-        ModelAndView mv = new ModelAndView("wap/cm/send_message");
-        return mv;
-    }
+//    @RequestMapping("/address")
+//    public ModelAndView adress(HttpServletRequest request) throws Exception {
+//        ModelAndView mv = new ModelAndView("wap/cm/send_message");
+//        return mv;
+//    }
 
     /**
      * 查询退回短信客诉问题

+ 215 - 9
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java

@@ -1,21 +1,26 @@
 package com.iamberry.rst.controllers.mq;
 
 import com.iamberry.rst.controllers.sys.SysController;
-import com.iamberry.rst.core.cm.SalesOrder;
-import com.iamberry.rst.core.cm.SalesOrderItem;
-import com.iamberry.rst.core.cm.StoreInfo;
+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.ProductColor;
+import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.sms.OrderMessage;
 import com.iamberry.rst.core.sms.SmsMessage;
 import com.iamberry.rst.core.sys.Relu;
-import com.iamberry.rst.faces.cm.SalesOrderService;
-import com.iamberry.rst.faces.cm.StoreInfoService;
+import com.iamberry.rst.faces.address.AddressService;
+import com.iamberry.rst.faces.cm.*;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.MessageService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.faces.sys.SysService;
+import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
 import com.iamberry.rst.service.sms.mapper.MessageMapper;
+import com.iamberry.rst.utils.KuaiDi100;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
@@ -29,14 +34,15 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import static com.iamberry.rst.util.SmsConfig.*;
+import static com.iamberry.rst.utils.KuaiDi100.replace;
+
 
 @Component(value="mqTask")
 @Lazy(false)
@@ -54,6 +60,18 @@ public class MQTask implements InitializingBean {
 	private SalesOrderService salesOrderService;
 	@Autowired
 	private SysService sysService;
+	@Autowired
+	private RepairService repairService;
+	@Autowired
+	private AddressService addressService;
+	@Autowired
+	private RenewedService renewedService;
+	@Autowired
+	private ReissueService reissueService;
+	@Autowired
+	private CustomerInfoMapper customerInfoMapper;
+
+
 
 	private Object lock = new Object();
 	private Object lock1 = new Object();
@@ -215,4 +233,192 @@ public class MQTask implements InitializingBean {
 			} while (returnFlag);    //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页*/
 		}
 	}
+
+	/**客诉系统  自动追踪发货信息**/
+	@Scheduled(cron = "0 0/30 * * * ?")//每30分钟执行一次
+	public void synchronousDelivery()throws Exception{
+		/*同步维修订单*/
+		Repair repair = new Repair();
+		repair.setRepairSendStatus(1);
+		List<Repair> listRepair = repairService.listSynchronizingRepair(repair);
+		if(listRepair.size() > 0){
+			for(Repair re:listRepair){
+				if(re.getSalesDealCode() != null){
+					EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
+					if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+						re.setRepairSendName(efastOrder.getOrderAddressName());
+						re.setRepairSendTel(efastOrder.getOrderAddressTel());
+						//查询省市县id
+						Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
+						re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
+						re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
+						re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
+						re.setRepairSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
+						re.setRepairSendAddress(efastOrder.getOrderAddress());
+						re.setRepairSendLogisticsCompany(efastOrder.getOrderPostFirm());
+						re.setRepairSendLogisticsNo(efastOrder.getOrderPostNum());
+						re.setRepairSendStatus(2);
+						Integer msg = repairService.updateRepairInfo(re,null,null);
+						if(msg > 0){
+							//发送维修发货通知短信
+							sendSMS("<维修业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
+						}
+					}
+				}
+
+			}
+		}
+
+		/*同步换货订单*/
+		Renewed renewed = new Renewed();
+		renewed.setRenewedSendStatus(1);
+		List<Renewed> listRenewed = renewedService.listSynchronizingRenewed(renewed);
+		if(listRenewed.size() > 0){
+			for(Renewed re:listRenewed){
+				if(re.getSalesDealCode() != null){
+					EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
+					if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+						re.setRenewedSendName(efastOrder.getOrderAddressName());
+						re.setRenewedSendTel(efastOrder.getOrderAddressTel());
+						//查询省市县id
+						Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
+						re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
+						re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
+						re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
+						re.setRenewedSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
+						re.setRenewedSendAddress(efastOrder.getOrderAddress());
+						re.setRenewedSendLogisticsCompany(efastOrder.getOrderPostFirm());
+						re.setRenewedSendLogisticsNo(efastOrder.getOrderPostNum());
+						re.setRenewedSendStatus(2);
+						Integer msg = renewedService.updateRenewedInfo(re,null,null);
+						if(msg > 0){
+							//发送换货发货通知短信
+							sendSMS("<换货业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
+						}
+					}
+				}
+			}
+		}
+		/*同步补发订单*/
+		Reissue reissue = new Reissue();
+		reissue.setReissueSendStatus(1);
+		List<Reissue> listReissue = reissueService.listSynchronizingReissue(reissue);
+		if(listReissue.size() > 0){
+			for(Reissue re:listReissue){
+				if(re.getSalesDealCode() != null){
+					EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
+					if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+						re.setReissueSendName(efastOrder.getOrderAddressName());
+						re.setReissueSendTel(efastOrder.getOrderAddressTel());
+						//查询省市县id
+						Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
+						re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
+						re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
+						re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
+						re.setReissueSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
+						re.setReissueSendAddress(efastOrder.getOrderAddress());
+						re.setReissueSendLogisticsCompany(efastOrder.getOrderPostFirm());
+						re.setReissueSendLogisticsNo(efastOrder.getOrderPostNum());
+						re.setReissueSendStatus(2);
+						Integer msg = reissueService.updateReissueInfo(re);
+						if(msg > 0){
+							//发送补发发货通知短信
+							sendSMS("<补发业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
+
+						}
+					}
+				}
+
+			}
+		}
+	}
+
+
+	/**
+	 * 发送发货通知
+	 * @param relation 维修 换货 补发
+	 * @param postFirm 物流公司代码
+	 * @param postNum	物流单号
+	 * @param customerId 客诉主键id
+	 * @param tel 手机号
+	 */
+	public void sendSMS(String relation,String postFirm,String postNum,Integer customerId,String tel){
+		if(postFirm != null && !postFirm.equals("") && postNum != null && !postNum.equals("")
+				&& customerId > 0 && !tel.equals("")){
+			postFirm =  KuaiDi100.replace(postFirm);
+			if(!postFirm.equals("")){
+				ProductType productType = customerInfoMapper.getcompanyAffiliation(customerId);
+				if(productType != null){
+					String rejected_text = "";
+					//1:美国watero; 2:上朵电动牙刷  3:优尼雅净水机
+					if (productType.getTypeCompany() == 1){
+						rejected_text = RELATION_SEND_WATERO;
+					}
+					if (productType.getTypeCompany() == 2){
+						rejected_text = RELATION_SEND_SHANGDUO;
+					}
+					if (productType.getTypeCompany() == 3){
+						rejected_text = RELATION_SEND_YULIA;
+					}
+					String text = MessageFormat.format(rejected_text, relation,postFirm+","+postNum);
+					smsService.sendOtherCMS(tel,text);
+				}
+
+			}
+		}
+	}
+
+	/**
+	 * 查询省市县id
+	 * @param
+	 */
+	public Map<String,String> provincesCitiesCounties(EfastOrder efastOrder){
+		Map<String,String> map = new HashMap<String, String>();
+		String province = "";
+		String city = "";
+		String zone = "";
+		//省
+		if(efastOrder.getOrderProvince().substring(efastOrder.getOrderProvince().length() - 1,efastOrder.getOrderProvince().length()).equals("省")){
+			province = efastOrder.getOrderProvince().substring(0,efastOrder.getOrderProvince().length() - 1);
+		}else{
+			province = efastOrder.getOrderProvince();
+		}
+		Province provinceinfo = new Province();
+		provinceinfo.setProvince(province);
+		List<Province> provinceList = addressService.listProvince(provinceinfo);
+		if(provinceList.size() < 1){
+			provinceinfo.setProvince(null);
+			provinceList = addressService.listProvince(provinceinfo);
+		}
+		map.put("provinceId",String.valueOf(provinceList.get(0).getProvinceId()));
+		map.put("province",provinceList.get(0).getProvince());
+
+
+		//市
+		city = efastOrder.getOrderCity().substring(0,efastOrder.getOrderCity().length() - 1);
+		City cityInfo = new City();
+		cityInfo.setCity(city);
+		List<City> cityList = addressService.listCity(cityInfo);
+		if(cityList.size() < 1){
+			cityInfo.setCity(null);
+			cityInfo.setProvinceId(provinceList.get(0).getProvinceId());
+			cityList = addressService.listCity(cityInfo);
+		}
+		map.put("cityId",String.valueOf(cityList.get(0).getCityId()));
+		map.put("city",cityList.get(0).getCity());
+
+		//区
+		zone = efastOrder.getOrderArea().substring(0,efastOrder.getOrderArea().length() - 1);
+		District district = new  District();
+		district.setDistrict(zone);
+		List<District> districtList = addressService.listDistrict(district);
+		if(districtList.size() < 1){
+			district.setDistrict(null);
+			district.setCityId(cityList.get(0).getCityId());
+			districtList = addressService.listDistrict(district);
+		}
+		map.put("districtId",String.valueOf(districtList.get(0).getDistrictId()));
+		map.put("district",districtList.get(0).getDistrict());
+		return map;
+	}
 }

+ 61 - 0
watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java

@@ -203,4 +203,65 @@ public class KuaiDi100 {
         }
         return content;
     }
+
+    /**物流名称替换**/
+    public static String replace(String code) {
+        String name = "";
+        switch (code){
+            case "sto":
+                name= "申通快递";
+                break;
+            case "yto":
+                name= "圆通快递";
+                break;
+            case "zto":
+                name= "中通速递";
+                break;
+            case "sf":
+                name= "顺丰快递";
+                break;
+            case "ems":
+                name= "邮政EMS";
+                break;
+            case "eyb":
+                name= "E邮宝";
+                break;
+            case "zjs":
+                name= "宅急送";
+                break;
+            case "yunda":
+                name= "韵达快递";
+                break;
+            case "cces":
+                name= "cces快递";
+                break;
+            case "pick":
+                name= "上门提货";
+                break;
+            case "htky":
+                name= "汇通快递";
+                break;
+            case "ttkdex":
+                name= "天天快递";
+                break;
+            case "stars":
+                name= "星晨急便";
+                break;
+            case "jd":
+                name= "京东快递";
+                break;
+            case "01":
+                name= "其他";
+                break;
+            case "02":
+                name= "上门送货";
+                break;
+            case "longbanwuliu":
+                name= "龙邦快递";
+                break;
+            default:
+                break;
+        }
+        return name;
+    }
 }

+ 53 - 43
watero-rst-web/src/main/java/com/iamberry/rst/utils/test.java

@@ -1,55 +1,65 @@
 package com.iamberry.rst.utils;
+import com.alibaba.dubbo.common.json.JSON;
+
+import com.auth0.jwt.internal.org.apache.commons.codec.binary.Base64;
+import com.auth0.jwt.internal.org.apache.commons.codec.binary.StringUtils;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+
 import java.io.File;
 import java.io.FileInputStream;
+import java.security.Key;
+import java.util.Map;
 
-import javax.print.Doc;
-import javax.print.DocFlavor;
-import javax.print.DocPrintJob;
-import javax.print.PrintService;
-import javax.print.PrintServiceLookup;
-import javax.print.ServiceUI;
-import javax.print.SimpleDoc;
-import javax.print.attribute.DocAttributeSet;
-import javax.print.attribute.HashDocAttributeSet;
-import javax.print.attribute.HashPrintRequestAttributeSet;
-import javax.swing.JFileChooser;
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.Key;
 
 
 public class test {
+    private static final String AES = "AES";
+
+    public static String decrypt(String encryptedData, String secretKey) throws Exception {
+        Key key = new SecretKeySpec(secretKey.getBytes(), AES);
+        Cipher c = Cipher.getInstance(AES);
+        c.init(2, key);
+        byte[] decodedValue = Base64.decodeBase64(encryptedData);
+        byte[] decValue = c.doFinal(decodedValue);
+        String decryptedValue = StringUtils.newStringUtf8(decValue);
+        return decryptedValue;
+    }
 
-            public static void main(String[] args) {
-                //获取系统所有打印机
-                PrintService[] services = PrintServiceLookup.lookupPrintServices(null,null);
-        for (int i = 0;i<=services.length;i++){
-            System.out.println(services[i].getName());
-        }
-        JFileChooser fileChooser = new JFileChooser(); //创建打印作业
-        int state = fileChooser.showOpenDialog(null);
-        if(state == fileChooser.APPROVE_OPTION){
-            File file = new File("D:/123.jpg"); //获取选择的文件
-            //构建打印请求属性集
-            HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
-            //设置打印格式,因为未确定类型,所以选择autosense
-            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
-            //查找所有的可用的打印服务
-            PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
-            //定位默认的打印服务
-            PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
-            //显示打印对话框
-            PrintService service = ServiceUI.printDialog(null, 200, 200, printService,
-                    defaultService, flavor, pras);
-
-            if(service != null){
-                try {
-                    DocPrintJob job = service.createPrintJob(); //创建打印作业
-                    FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
-                    DocAttributeSet das = new HashDocAttributeSet();
-                    Doc doc = new SimpleDoc(fis, flavor, das);
-                    job.print(doc, pras);
-                } catch (Exception e) {
-                    e.printStackTrace();
+
+    public static void main(String[] args) throws Exception {
+        /*ConsumerRecord<String, String> record = new ConsumerRecord<String, String>("4", 1, 1, "data", "{\"data\":\"7uiBfrOFcdy/EDWxcT6SlS1SvUzaqGDqdPa6XsnYNTrplpwdmjgJAo741xY0kRC8hmZ8/vfzF9f8C5g7pKI8TvzaeeNu675pH3s5SP/5/ba4eJOW8Qqwm/1H4nNX+1Ed/CTueaJe3E/BNsFxe7rF+nV1vzOwuvXM6YHC6yYNIi4t16eWO4Fyopbz12I60Pf8CTCNBf4XIxuHSB/BGVZpATEykU1vILnX89GzoJlV+10=\"}");
+        String appKey = "5kkyurvvtt58bbuxueee";//填APP KEY
+        String secretKey = "rhj6na6u3y6uhy6qrbb3944mg5uqqpbb";//APP SECRET
+        String data = decrypt(JSONObject.fromObject(record.value()).getString("data"),
+                secretKey.substring(8, 24));//解析后的真正数据
+
+        JSONObject jasonObject = JSONObject.fromObject(data);
+        if(jasonObject.has("dps")){
+            JSONArray dps = jasonObject.getJSONArray("dps");
+            boolean flog = false;
+            for(int i = 0; i < dps.size(); i++){
+                Map maps = (Map) JSON.parse(dps.getString(i));
+                    for (Object obj : maps.keySet()){
+                    if(obj.equals("DEVECE_CONTROL_MILK")){
+                        String milkPowder = maps.get(obj).toString();
+                        flog = true;//如果数据中包含当前字段,表示当前推送的数据为奶粉记录
+                    }
+                    if(obj.equals("t")){
+                        Long milkTime = (Long)maps.get((obj));
+                    }
                 }
             }
-        }
+            if(flog){
+                // 根据机器ID 获取对应的用户id
+                String devId = jasonObject.getString("devId");
+
+                flog = false;
+            }
+        }*/
     }
 }

File diff suppressed because it is too large
+ 10 - 6
watero-rst-web/src/main/resources/platform.properties


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

@@ -82,10 +82,9 @@
             </div>
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>跟进客服:</label>
-                <div class="formControls col-4 col-sm-4"> <span class="select-box">
-				<select name="adminId" id="adminId" class="select">
-
-				</select>
+                <div class="formControls col-4 col-sm-4"> <span class="select-box" style=" width: 625px;">
+                    <select name="adminId" id="adminId" class="select">
+                    </select>
 				</span>
                 </div>
             </div>
@@ -103,7 +102,8 @@
                     <div class="radio-box">
                         <input type="radio" id="tel-3" name="customerSourceType" value="3">
                         <label for="tel-3">其他</label>
-                        <input type="text" style="width: 150px;margin-left: 10px;" class="input-text" value="" placeholder="" id="customerSource" name="customerSource">
+                        <input type="text" style="width: 321px;margin-left: 10px;" class="input-text" value="" placeholder="" id="customerSourceOld" name="customerSourceOld" placeholder="">
+                        <input type="hidden" value="" placeholder="" id="customerSource" name="customerSource">
                     </div>
                 </div>
             </div>
@@ -181,7 +181,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:983px;height:250px;"></script>
                     </script>
                     <input type="hidden" name="describeContent" id="describeContent">
                 </div>
@@ -224,23 +224,23 @@
                         <input type="radio" id="customer-process-2" value="2" name="customerIsSolve">
                         <label for="customer-process-2">未解决</label>
                     </div>
-                    <div class="radio-box" id="renewed">
+                    <div class="radio-box" id="renewed" style="display: none">
                         <input type="radio" id="customer-process-3" value="3" name="customerIsSolve">
                         <label for="customer-process-3">换新</label>
                     </div>
-                    <div class="radio-box" id="maintain">
+                    <div class="radio-box" id="maintain" style="display: none">
                         <input type="radio" id="customer-process-4" value="4" name="customerIsSolve">
                         <label for="customer-process-4">维修</label>
                     </div>
-                    <div class="radio-box" id="reissue">
+                    <div class="radio-box" id="reissue" style="display: none">
                         <input type="radio" id="customer-process-5" value="5" name="customerIsSolve">
                         <label for="customer-process-5">补发</label>
                     </div>
-                    <div class="radio-box" id="backGoods">
+                    <div class="radio-box" id="backGoods" style="display: none">
                         <input type="radio" id="customer-process-6" value="6" name="customerIsSolve">
                         <label for="customer-process-6">退货</label>
                     </div>
-                    <div class="radio-box" id="noReasonBack">
+                    <div class="radio-box" id="noReasonBack" style="display: none">
                         <input type="radio" id="customer-process-7" value="7" name="customerIsSolve">
                         <label for="customer-process-7">无理由退货</label>
                     </div>
@@ -280,16 +280,8 @@
                             <th style="text-align: center;">购买日期</th>
                         </tr>
                         <tr id="showOrder">
-                          <#--  <td>爱贝源-微信商城</td>
-                            <td>1290387806</td>
-                            <td>何小小</td>
-                            <td>1882222888</td>
-                            <td>¥3680</td>
-                            <td>Watero净水机</td>
-                            <td>2017-06-06</td>-->
+                            <td style="text-align: center;" colspan="7">暂未选择订单</td>
                         </tr>
-                        <#--<tr id="showOrderAddress">-->
-                        <#--</tr>-->
                     </table>
                     <input type="hidden" id="companyId" name="companyId" value="" >
                     <input type="hidden" id="storeId" name="storeId" value="" >
@@ -304,6 +296,9 @@
                 <div class="formControls col-2 col-sm-2">
                     <input type="text" class="input-text" value="" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" 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="邮费转账账户!">
+                </div>
             </div>
             <div class="row cl" id="recipientAddress" style="display: none;">
                 <input type="hidden" id="addressInfo">
@@ -350,29 +345,9 @@
                             </tr>
                         </thead>
                         <tbody id="addProduct">
-                            <#--<tr >
-                                <td>冲奶机</td>
-                                <td>
-                                    <div>
-                                        白色
-                                        <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                    </div>
-                                    <div>
-                                        白色
-                                        <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                    </div>
-                                </td>
-                                <td>
-                                    <div>
-                                        水箱
-                                        <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                    </div>
-                                    <div>
-                                        水箱
-                                        <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                    </div>
-                                </td>
-                            </tr>-->
+                            <tr id="showOrder">
+                                <td style="text-align: center;" colspan="3">请选择订单之后再选择产品</td>
+                            </tr>
                         </tbody>
                     </table>
 
@@ -404,14 +379,14 @@
             <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收集:<span id="DTS-address"></span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;进水:<span id="DTS-in"></span>PPM   出水:<span id="DTS-out"></span>PPM
+                    <span id="DTS-address"></span>
+                    &nbsp;&nbsp;&nbsp;&nbsp;<span id="DTS-in"></span>&nbsp;&nbsp;  <span id="DTS-out"></span>
                 </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: 250px">
-                    <script id="sendAddressSms" type="text/plain" style="width:1000px;height:200px;"></script>
+                    <script id="sendAddressSms" type="text/plain" style="width:983px;height:200px;"></script>
                     </script>
                 </div>
             </div>
@@ -440,16 +415,18 @@
                         </tr>
                         </thead>
                         <tbody id="back-product">
-
+                            <tr id="showOrder">
+                                <td style="text-align: center;" colspan="3">请选择订单之后再选择产品</td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
 
             </div>
             <div class="row cl">
-                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>处理描述:</label>
+                <label class="form-label col-1 col-sm-1">处理描述:</label>
                 <div class="formControls col-5 col-sm-5">
-                    <script id="describeHandleDescText" type="text/plain" style="width:1000px;height:250px;"></script>
+                    <script id="describeHandleDescText" type="text/plain" style="width:983px;height:250px;"></script>
                     </script>
                     <input type="hidden" id="describeHandleDesc" name="describeHandleDesc">
                 </div>
@@ -458,16 +435,16 @@
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>回访信息:</label>
                 <div class="formControls col-10 col-sm-10 skin-minimal">
                     <div class="radio-box">
-                        <input type="radio" id="customer-visit-1" name="customerIsVisit" value="2" checked>
+                        <input type="radio" id="customer-visit-1" name="customerIsVisit" value="2" >
                         <label for="customer-visit-1">需要回访</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="customer-visit-2" name="customerIsVisit"  value="1">
+                        <input type="radio" id="customer-visit-2" name="customerIsVisit"  value="1" checked>
                         <label for="customer-visit-2">不需要回访</label>
                     </div>
                 </div>
             </div>
-            <div id="needToVisit">
+            <div id="needToVisit" style="display: none;">
                 <div class="row cl">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>回访人:</label>
                     <div class="formControls col-2 col-sm-2">
@@ -574,20 +551,122 @@
         //$("#answer-textarea").text();
         $(".dalog-ask").hide(); //隐藏qa
     });
-
-    /*实时监听文本框-- 员工编号*/
-    document.getElementById("suggest").addEventListener("div", function(){
-        alert(1);
-    });
 </script>
 
 <script>
+
+    var tool = [
+        'anchor', //锚点
+        'undo', //撤销
+        'redo', //重做
+        'bold', //加粗
+        'indent', //首行缩进
+        'snapscreen', //截图
+        'italic', //斜体
+        'underline', //下划线
+        'strikethrough', //删除线
+        'subscript', //下标
+        'fontborder', //字符边框
+        'superscript', //上标
+        'formatmatch', //格式刷
+        //'source', //源代码
+        'blockquote', //引用
+        'pasteplain', //纯文本粘贴模式
+        'selectall', //全选
+        'print', //打印
+        'preview', //预览
+        'horizontal', //分隔线
+        'removeformat', //清除格式
+        'time', //时间
+        'date', //日期
+        'unlink', //取消链接
+        'insertrow', //前插入行
+        'insertcol', //前插入列
+        'mergeright', //右合并单元格
+        'mergedown', //下合并单元格
+        'deleterow', //删除行
+        'deletecol', //删除列
+        'splittorows', //拆分成行
+        'splittocols', //拆分成列
+        'splittocells', //完全拆分单元格
+        'deletecaption', //删除表格标题
+        'inserttitle', //插入标题
+        'mergecells', //合并多个单元格
+        'deletetable', //删除表格
+        'cleardoc', //清空文档
+        'insertparagraphbeforetable', //"表格前插入行"
+        //'insertcode', //代码语言
+        'fontfamily', //字体
+        'fontsize', //字号
+        'paragraph', //段落格式
+        'simpleupload', //单图上传
+        'insertimage', //多图上传
+        'edittable', //表格属性
+        'edittd', //单元格属性
+        'link', //超链接
+        'emotion', //表情
+        'spechars', //特殊字符
+        'searchreplace', //查询替换
+        'map', //Baidu地图
+        'gmap', //Google地图
+        'insertvideo', //视频
+        'help', //帮助
+        'justifyleft', //居左对齐
+        'justifyright', //居右对齐
+        'justifycenter', //居中对齐
+        'justifyjustify', //两端对齐
+        'forecolor', //字体颜色
+        'backcolor', //背景色
+        'insertorderedlist', //有序列表
+        'insertunorderedlist', //无序列表
+        'fullscreen', //全屏
+        'directionalityltr', //从左向右输入
+        'directionalityrtl', //从右向左输入
+        'rowspacingtop', //段前距
+        'rowspacingbottom', //段后距
+        'pagebreak', //分页
+        'insertframe', //插入Iframe
+        'imagenone', //默认
+        'imageleft', //左浮动
+        'imageright', //右浮动
+        'attachment', //附件
+        'imagecenter', //居中
+        'wordimage', //图片转存
+        'lineheight', //行间距
+        'edittip ', //编辑提示
+        'customstyle', //自定义标题
+        'autotypeset', //自动排版
+       // 'webapp', //百度应用
+        'touppercase', //字母大写
+        'tolowercase', //字母小写
+        'background', //背景
+        'template', //模板
+       // 'scrawl', //涂鸦
+        'music', //音乐
+        'inserttable', //插入表格
+        'drafts', // 从草稿箱加载
+        'charts' // 图表
+    ];
+
     /*问题描述*/
-    var describeContentText = UE.getEditor('describeContentText');
+    var describeContentText = UE.getEditor('describeContentText', {
+        toolbars: [tool],
+        autoHeightEnabled: true,
+        autoFloatEnabled: true,
+        zIndex : 5
+    });
     /*处理描述*/
-    var describeHandleDescText = UE.getEditor('describeHandleDescText');
+    var describeHandleDescText = UE.getEditor('describeHandleDescText', {
+        toolbars: [tool],
+        autoHeightEnabled: true,
+        autoFloatEnabled: true
+    });
     /*邮寄地址*/
-    var sendAddressSms = UE.getEditor('sendAddressSms');
+    var sendAddressSms = UE.getEditor('sendAddressSms', {
+        toolbars: [tool],
+        autoHeightEnabled: true,
+        autoFloatEnabled: true
+    });
 
     sendAddressSms.ready(function() {
         sendAddressSms.setHeight(130);  //固定高度
@@ -618,12 +697,13 @@
     /*  寄回地址的id */
     var complaint_questionId = 5;
 
+    /* 用于判断是否第一次初始化省市区-- 只在选择类型为售后时使用 */
+    var isInitAddress = 0;
+
     /*初始化页面参数*/
     $(function () {
-
-
         /* 初始化单选框样式 */
-        initCheck();
+        //initCheck();
 
         /*初始化产品类型 --  客诉头部的产品类型单选 */
         initProduceType();
@@ -735,6 +815,30 @@
         });
     }
 
+    /*初始化单选框样式*/
+    function initCheckByNode(node){
+        node.iCheck({
+            checkboxClass: 'icheckbox-blue',
+            radioClass: 'iradio-blue',
+            increaseArea: '20%'
+        });
+    }
+
+    /*
+    * type 1:不需要回访  2:需要回访
+    * */
+    function visitByType(type){
+        if(1 == type){  //不需要回访
+            $("#customer-visit-2").prop("checked",true); //不需要回访
+            initCheckByNode($("#customer-visit-2"));
+            $("#needToVisit").css("display","none");
+        }else{
+            $("#customer-visit-1").prop("checked",true); //需要回访
+            initCheckByNode($("#customer-visit-1"));
+            $("#needToVisit").css("display","block");
+        }
+    }
+
     function keyFun(node){
         var c=$(node);
         if(/[^\d]/.test(c.val())){//替换非数字字符
@@ -745,13 +849,14 @@
 
 
     /*初始化客服*/
+    var sysAminList;
     function initSysAdmin() {
-        var sysAminList = getSysAdmin();
+        sysAminList = getSysAdmin();
         var html = "";
         for(var i=0;i<sysAminList.length;i++){
             var adminList = sysAminList[i];
             if(adminId != null && adminId != "" && adminId != 0 && adminId == adminList.adminId ){
-                html += '<option value="'+ adminList.adminId +'" selected>'+ adminList.adminName +'</option>';
+                html += '<option value="'+ adminList.adminId +'" selected>'+ adminList.adminName +'(我)</option>';
             }else{
                 html += '<option value="'+ adminList.adminId +'">'+ adminList.adminName +'</option>';
             }
@@ -761,13 +866,12 @@
 
     /*初始化回访客服的选择*/
     function initVisitSysAdmin(){
-        var sysAminList = getSysAdmin();
         var html = "";
         var flag = false;
         for(var i=0;i<sysAminList.length;i++){
             var adminList = sysAminList[i];
             if(adminId != null && adminId != "" && adminId != 0 && adminId == adminList.adminId ){
-                html += '<option value="'+ adminList.adminId +'" selected>'+ adminList.adminName +'</option>';
+                html += '<option value="'+ adminList.adminId +'" selected>'+ adminList.adminName +'(我)</option>';
                 flag = true;
             }else{
                 html += '<option value="'+ adminList.adminId +'">'+ adminList.adminName +'</option>';
@@ -868,13 +972,16 @@
             $("#reissue").hide();
             $("#backGoods").hide();
             $("#noReasonBack").hide();
+
             switch(type)
             {
                 case 1:
                     otherHied();
+                    visitByType(1);
                     break;
                 case 2:
                     otherHied();
+                    visitByType(2);
                     break;
                 default:
                     break;
@@ -885,6 +992,15 @@
             if(msg == null || msg == ""){
                 initComplaintQuestionInfo("m");
             }
+
+            /* 在选择售后类型是,直接初始化省市区,使用isInitAddress 变量来判断 */
+            if(isInitAddress == 0){
+                var proId = setPro(null,2);
+                var cityId = setCity(null,proId,2);
+                setDistrict(null,cityId,2);
+                isInitAddress = 1;
+            }
+
             $("#renewed").show();
             $("#maintain").show();
             $("#reissue").show();
@@ -894,9 +1010,11 @@
             {
                 case 1:
                     otherHied();
+                    visitByType(1);
                     break;
                 case 2:
                     otherHied();
+                    visitByType(2); //需要回访
                     break;
                 case 3: //换新
                     result = isSolve.renewed;
@@ -913,6 +1031,8 @@
                     $("#sendAddressInfo").show();
                     $("#sendAddressByPhone").show();
                     $("#updateProduct").show();
+                    $("#postageAccount").show();    //邮费转账账户
+                    visitByType(2); //需要回访
                     break;
                 case 4: //维修
                     result = isSolve.maintain;
@@ -929,6 +1049,8 @@
                     $("#sendAddressInfo").show();
                     $("#sendAddressByPhone").show();
                     $("#updateProduct").show();
+                    $("#postageAccount").show();    //邮费转账账户
+                    visitByType(2); //需要回访
                     break;
                 case 5://补发
                     result = isSolve.reissue;
@@ -945,6 +1067,8 @@
                     $("#sendAddressInfo").hide();
                     $("#sendAddressByPhone").hide();
                     $("#updateProduct").hide();
+                    $("#postageAccount").hide();    //邮费转账账户 -- 隐藏
+                    visitByType(2); //需要回访
                     break;
                 case 6: //退货
                     result = isSolve.backGoods;
@@ -961,6 +1085,8 @@
                     $("#sendAddressInfo").show();
                     $("#sendAddressByPhone").show();
                     $("#updateProduct").hide();
+                    $("#postageAccount").show();    //邮费转账账户
+                    visitByType(2); //需要回访
                     break;
                 case 7://无理由退货
                     result = isSolve.noReasonBack;
@@ -977,6 +1103,8 @@
                     $("#sendAddressInfo").show();
                     $("#sendAddressByPhone").show();
                     $("#updateProduct").hide();
+                    $("#postageAccount").show();    //邮费转账账户
+                    visitByType(2); //需要回访
                     break;
                 default:
                     break;
@@ -1152,10 +1280,16 @@
             return false;
         }
 
+        if(desc == null || desc == "" || questionId==null || questionId == ""){
+            layer.close(index);
+            layer.msg("信息不全,无法发送短信", {icon: 5, time: 3000});
+            return false;
+        }
+
         var reg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
         if(!reg.test(phone)){
-            layer.msg("手机号码格式不正确", {icon: 5, time: 3000});
             layer.close(index);
+            layer.msg("手机号码格式不正确", {icon: 5, time: 3000});
             return false;
         }
 
@@ -1248,8 +1382,11 @@
                        //address = '<td colspan="1">收货地址</td><td colspan="6" class="td-manage text-c" >'+ salesOrder.salesAddressInfo +'&nbsp;&nbsp;&nbsp;&nbsp;<a style="color: #0a6999;text-decoration: underline;" href="javascript:void(0);" title="编辑" onclick="updateAdress()">修改地址</a></td>' ;
                         address = salesOrder.salesAddressInfo;
 
-                        $("#sendName").val(salesOrder.salesAddressName); //订单名称
-                        $("#sendTel").val(salesOrder.salesAddressTel);  //订单电话号码
+                        $("#sendName").val(salesOrder.salesAddressName); //收件人名称
+                        $("#sendTel").val(salesOrder.salesAddressTel);  //收件人电话号码
+
+                        $("#customerName").val(salesOrder.salesAddressName); //收件人名称
+                        $("#customerTel").val(salesOrder.salesAddressTel);  //收件人电话号码
                     }
                    // $("#showOrderAddress").html(address);
                 }else{
@@ -1332,23 +1469,24 @@
     function setPro(provinceName,type) {
         var proId = '';
         var province = listProvince();
-        var selectPro = {};
+        var selectPro = new Array();
         if(type == 1){
             selectPro = listProvince("",provinceName);
-        }else if(type == 2){
-            selectPro = null;
         }
         if(province!=null){
             var provinceHtml = ''
             for(var i=0;i<province.length;i++){
-                if(selectPro!= null && province[i].provinceId == selectPro[0].provinceId){
-                    proId = selectPro[0].provinceId;
-                    provinceHtml += '<option value="'+ province[i].provinceId +'" selected>'+ province[i].province +'</option>';
-                }else{
-                    provinceHtml += '<option value="'+ province[i].provinceId +'">'+ province[i].province +'</option>';
-                }
+                provinceHtml += '<option value="'+ province[i].provinceId +'">'+ province[i].province +'</option>';
             }
+
             $("#province").html(provinceHtml);
+
+            if(selectPro != null && selectPro.length > 0 ){
+                proId = selectPro[0].provinceId;
+            }else{
+                proId = province[0].provinceId;
+            }
+            $("#province option[value='" + proId + "']").attr("selected","true");
         }
         return proId;
     }
@@ -1360,25 +1498,23 @@
     function setCity(cityName,proId,type) {
         var cityId = '';
         var city = listCity(proId,"");
-        var selectCity = {};
+        var selectCity = new Array();
         if(type == 1){
             selectCity = listCity(proId,cityName);
-        }else if(type == 2){
-            selectCity = null;
-            cityId = city[0].cityId;
         }
 
         if(city!=null){
             var cityHtml = ''
             for(var i=0;i<city.length;i++){
-                if(selectCity != null && city[i].cityId == selectCity[0].cityId){
-                    cityId = city[i].cityId;
-                    cityHtml += '<option value="'+ city[i].cityId +'" selected>'+ city[i].city +'</option>';
-                }else{
-                    cityHtml += '<option value="'+ city[i].cityId +'">'+ city[i].city +'</option>';
-                }
+                cityHtml += '<option value="'+ city[i].cityId +'">'+ city[i].city +'</option>';
             }
             $("#city").html(cityHtml);
+            if(selectCity != null && selectCity.length > 0 ){
+                cityId = selectCity[0].cityId;
+            }else{
+                cityId = city[0].cityId;
+            }
+            $("#city option[value='" + cityId + "']").attr("selected","true");
         }
         return cityId;
     }
@@ -1389,22 +1525,23 @@
      */
     function setDistrict(districtName,cityId,type) {
         var district = listDistrict(cityId,"");
-        var selectDistrict = {};
+        var selectDistrict = new Array();
         if(type == 1){
             selectDistrict = listDistrict(cityId,districtName);
-        }else if(type == 2){
-            selectDistrict = null;
         }
         if(district!=null){
             var districtHtml = ''
             for(var i=0;i<district.length;i++){
-                if(selectDistrict != null && district[i].districtId == selectDistrict[0].districtId){
-                    districtHtml += '<option value="'+ district[i].districtId +'" selected>'+ district[i].district +'</option>';
-                }else{
-                    districtHtml += '<option value="'+ district[i].districtId +'">'+ district[i].district +'</option>';
-                }
+                districtHtml += '<option value="'+ district[i].districtId +'">'+ district[i].district +'</option>';
             }
+            var disId = "";
             $("#district").html(districtHtml);
+            if(selectDistrict != null && selectDistrict.length > 0 ){
+                disId = selectDistrict[0].cityId;
+            }else{
+                disId = district[0].cityId;
+            }
+            $("#city option[value='" + disId + "']").attr("selected","true");
         }
     }
 
@@ -1430,6 +1567,7 @@
         }
         $("#TDSArea").html(html);
         $("#TDSArea").find("option").eq(0).prop("selected",true);
+        setTDSCollect();
     }
 
     /**
@@ -1464,10 +1602,10 @@
                     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 +'">' +
+                                '         <td width="15" style="'+ fristInputStyle +' padding: 0px;width: 25px;">' +
                                 '             <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))" >' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;border: none;text-align: center;" value="'+ number +'" placeholder="产品数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
                                 '         </td>' +
                                 '     </tr>';
                         fristInputStyle = "";
@@ -1488,10 +1626,10 @@
                         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 +'">' +
+                                '         <td width="15" style="'+ fristInputStyle +'padding: 0px;width: 25px;">' +
                                 '             <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))" >' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;border: none;text-align: center;" value="'+ number +'" placeholder="配件数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
                                 '         </td>' +
                                 '     </tr>';
                         fristInputStyle = "";
@@ -1591,11 +1729,16 @@
     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());
+        if(TDSAddress != null && TDSAddress != ""){
+            $("#DTS-address").html("地址:" + TDSAddress);
+            var customerInTDS = $("#customerInTDS").val();
+            var customerOutTDS = $("#customerOutTDS").val()
+            if(customerInTDS != null && customerInTDS != "" && customerOutTDS != null && customerOutTDS != ""){
+                $("#DTS-in").html("进水:" + customerInTDS + " PPM");
+                $("#DTS-out").html("出水:" + customerOutTDS + " PPM");
+            }
+        }
     }
 </script>
 <script>
@@ -1640,6 +1783,19 @@
     /* 添加客诉的准备 */
     function addCustomerReady(){
 
+        var customerSourceType = $("input:radio[name='customerSourceType']:checked").val();
+        if(customerSourceType == 3){
+            var customerSourceOld = $("#customerSourceOld").val();
+            if(customerSourceOld == null || customerSourceOld == "" || typeof(customerSourceOld)=="undefined"){
+
+                vailErrorMsg($("#customerSourceOld"),"未填写来源入口");
+
+                return false;
+            }else{
+                $("#customerSource").val(customerSourceOld);
+            }
+        }
+
         /*----TDS收集模块--start-----*/
         var valicity = $(".ac_result_tip").html();
         if(valicity == null || valicity == "" || typeof(valicity)=="undefined"){
@@ -1675,10 +1831,6 @@
 
         /*----处理描述- start --*/
         var describeHandleDescText = UE.getEditor('describeHandleDescText').getContent();
-        if(describeContentText == null || describeContentText == ""){
-            layer.msg("未填写处理描述", {icon: 5, time: 3000});
-            return false;
-        }
         $("#describeHandleDesc").val(describeHandleDescText);
         /*----处理描述--end-----*/
 

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

@@ -1,395 +0,0 @@
-<!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="salesAddressName" 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="salesAddressTel" 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>

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

@@ -8,7 +8,7 @@
     <meta http-equiv="Cache-Control" content="no-siteapp" />
     <link rel="Bookmark" href="/favicon.ico" >
     <link rel="Shortcut Icon" href="/favicon.ico" />
-<#include "/base/list_base.ftl">
+<#include "/base/add_base.ftl">
     <title>客诉列表</title>
     <style>
         .tit{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
@@ -56,113 +56,194 @@
 </head>
 <body>
 <div class="page-container">
-    <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="order-list">
+        <div class="text-c">
+            <form action="" method="post">
+                <div class="row cl" style="margin-left: 0px;">
 
-                <div class="formControls col-2 col-sm-2" > <span class="select-box">
-                    <select name="" class="select" id="companyId">
-                         <option value="">销售公司</option>
-                        <#if companyInfoList?? &&  (companyInfoList?size > 0) >
-                            <#list companyInfoList as companyInfo>
-                                <option value ="${companyInfo.companyId!""}">${companyInfo.companyName!""}</option>
-                            </#list>
-                        </#if>
-                    </select>
-                    </span>
-                </div>
-                <div class="formControls col-2 col-sm-2" > <span class="select-box">
-                    <select name="" class="select" id="storeId">
-                    </select>
-                    </span>
-                </div>
-                <div class="formControls col-2 col-sm-2"> <span class="select-box">
-                    <select name="" class="select" id="storeId">
-                        <option value="">所有类型</option>
-                        <option value="0">取消订单</option>
-                        <option value="1">待支付</option>
-                        <option value="2">已支付</option>
-                        <option value="3">退款申请中</option>
-                        <option value="4">已退款</option>
-                        <option value="5">已发货</option>
-                        <option value="6">申请退货中</option>
-                        <option value="7">退货中</option>
-                        <option value="8">订单退货,订单关闭</option>
-                        <option value="9">换货中</option>
-                        <option value="10">换货完成</option>
-                        <option value="11">申请换货中</option>
-                        <option value="12">已完成</option>
-                        <option value="13">全额付款</option>
-                        <option value="14">定金付款</option>
-                    </select>
-                    </span>
-                </div>
-                <div class="formControls col-2 col-sm-2" >
-                    <input type="text" class="input-text" value="" placeholder="订单编号" id="salesId" name="">
-                </div>
-            </div>
+                 <#--   <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" style="padding: 0px 10px 0px 0px; width: 110px;" > <span class="select-box">
+                        <select name="" class="select" id="companyId">
+                             <option value="">销售公司</option>
+                            <#if companyInfoList?? &&  (companyInfoList?size > 0) >
+                                <#list companyInfoList as companyInfo>
+                                    <option value ="${companyInfo.companyId!""}">${companyInfo.companyName!""}</option>
+                                </#list>
+                            </#if>
+                        </select>
+                        </span>
+                    </div>
+                    <div class="formControls col-2 col-sm-2" style="padding: 0px 10px 0px 0px; width: 110px;"> <span class="select-box">
+                        <select name="" class="select" id="storeId">
+                        </select>
+                        </span>
+                    </div>
+                    <div class="formControls col-2 col-sm-2" style="padding: 0px 10px 0px 0px; width: 110px;"> <span class="select-box">
+                        <select name="" class="select" id="storeId">
+                            <option value="">所有类型</option>
+                            <option value="1">正常</option>
+                            <option value="2">换货</option>
+                            <option value="3">退货</option>
+                            <#--<option value="0">取消订单</option>
+                            <option value="1">待支付</option>
+                            <option value="2">已支付</option>
+                            <option value="3">退款申请中</option>
+                            <option value="4">已退款</option>
+                            <option value="5">已发货</option>
+                            <option value="6">申请退货中</option>
+                            <option value="7">退货中</option>
+                            <option value="8">订单退货,订单关闭</option>
+                            <option value="9">换货中</option>
+                            <option value="10">换货完成</option>
+                            <option value="11">申请换货中</option>
+                            <option value="12">已完成</option>
+                            <option value="13">全额付款</option>
+                            <option value="14">定金付款</option>-->
+                        </select>
+                        </span>
+                    </div>
+                    <div class="formControls col-2 col-sm-2"  style="padding: 0px 10px 0px 0px; width: 110px;">
+                        <input type="text" class="input-text" value="" placeholder="订单编号" id="salesId" name="">
+                    </div>
 
-            <div class="row cl" style="margin-top: 10px;">
+                     <div class="formControls col-2 col-sm-2" style="padding: 0px 10px 0px 0px; width: 110px;" >
+                         <input type="text" class="input-text" value="" placeholder="收货人姓名" id="salesAddressName" name="">
+                     </div>
+                     <div class="formControls col-2 col-sm-2" style="padding: 0px 10px 0px 0px; width: 110px;">
+                         <input type="text" class="input-text" value="" placeholder="收货人电话" id="salesAddressTel" name="">
+                     </div>
+                     <div class="formControls col-1 col-sm-1" >
+                         <button type="button" class="btn btn-primary" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="searchOrder" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+                     </div>
 
-                <div class="formControls col-2 col-sm-2" >
-                    <input type="text" class="input-text" value="" placeholder="收货人姓名" id="salesAddressName" name="">
-                </div>
-                <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="收货人电话" id="salesAddressTel" name="">
                 </div>
-                <div class="formControls col-1 col-sm-1">
-                    <button type="button" class="btn btn-primary" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="searchOrder" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+
+            </form>
+        </div>
+
+        <div class="mt-20 ">
+            <table class="table table-border table-bordered table-bg table-hover table-sort">
+                <thead>
+                <tr class="text-c">
+                    <th width="50">渠道商</th>
+                    <th width="60">订单编号</th>
+                    <th width="100">收货人姓名</th>
+                    <th width="80">收货人电话</th>
+                    <th width="80">订单金额</th>
+                    <th width="80">购买产品</th>
+                    <th width="80">购买日期</th>
+                    <th width="100">收货地址</th>
+                    <th width="80">操作</th>
+                </tr>
+                </thead>
+                <tbody id="orderAll">
+
+                     <tr class="text-c">
+                         <td colspan="9">没有搜索到订单~  <a src="javascript:void(0)" style="color: #00e;text-decoration: underline;" onclick="addOrder()">去添加</a>
+                         </td>
+                     </tr>
+
+                </tbody>
+            </table>
+        </div>
+    </div>
+
+
+    <div class="order-add" style="display: none">
+        <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="salesAddressName" 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="salesAddressTel" 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"  margin-top: 20px;">
+                        <label class="form-label col-1 col-sm-1" style="width: 110px;"></label>
+                        <div class="formControls col-2 col-sm-2">
+                            <button style="height: 40px;font-size: 15px;" class="btn btn-block btn-primary size-XL" type="submit">添加订单</button>
+                        </div>
+                        <div class="formControls col-2 col-sm-2">
+                            <button style="height: 40px;font-size: 15px;" class="btn btn-block btn-primary size-XL" type="button" onclick="toSearch()">去搜索</button>
+                        </div>
+                    </div>
+
                 </div>
             </div>
         </form>
     </div>
 
-    <div class="mt-20">
-        <table class="table table-border table-bordered table-bg table-hover table-sort">
-        <thead>
-        <tr class="text-c">
-            <th width="50">渠道商</th>
-            <th width="60">订单编号</th>
-            <th width="100">收货人姓名</th>
-            <th width="80">收货人电话</th>
-            <th width="80">订单金额</th>
-            <th width="80">购买产品</th>
-            <th width="80">购买日期</th>
-            <th width="100">收货地址</th>
-            <th width="80">操作</th>
-        </tr>
-        </thead>
-        <tbody id="orderAll">
-            <#--<#if page.dataList?? &&  (page.dataList?size > 0) >
-                    <#list page.dataList as customer>
-                        <tr class="text-c">
-                            &lt;#&ndash;<td>${customer.customerId!''}</td>&ndash;&gt;
-                            <td>${customer.produceName!''}</td>
-                            <td>${customer.customerName!''}</td>
-                            <td>${customer.customerVersion!''}</td>
-                            <td>${customer.componentsQuantity!'0'}</td>
-                            <td><#if customer.allComponentsCost?? >${customer.allComponentsCost/100}</#if></td>
-                            <td><#if customer.allComponentsWeight?? >${customer.allComponentsWeight}</#if></td>
-                            <td>${customer.customerRemarks!''}</td>
-                            <td>${(customer.customerUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
-                            <td>${(customer.customerCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
-                        </tr>
-                    </#list>
-            <#else>
-                <tr><td colspan="10" class="td-manage text-c" >暂时没有Customer,请添加!</td></tr>
-            </#if>-->
-        </tbody>
-    </table>
-    </div>
 
 </div>
 
-
-
 <tfoot>
 <#--<#include "/base/page_util.ftl">-->
 </tfoot>
@@ -182,7 +263,7 @@
         });
 
         /*初始化  搜索订单  */
-        searchOrder();
+        //searchOrder();
 
 
     })
@@ -243,7 +324,7 @@
             async: true,
             success: function(data){
                 var html = "";
-                if (data.returnCode == 200) {
+                if (data.returnCode == 200 && data.returnMsg.salesOrderList.length > 0 ) {
                     for(var i=0;i<data.returnMsg.salesOrderList.length;i++){
                         var salesOrder = data.returnMsg.salesOrderList[i];
 
@@ -271,8 +352,9 @@
                                 ' </tr>';
                     }
                 }else{
-                    html = '';
+                    html = "";
                 }
+                html += '<tr class="text-c"><td colspan="9">没有搜索到订单~  <a src="javascript:void(0)" style="color: #00e;text-decoration: underline;" onclick="addOrder()">去添加</a></td></tr>';
                 $("#orderAll").html(html);
                 layer.close(index);
             },
@@ -290,12 +372,265 @@
         parent.layer.close(parent.layer.getFrameIndex(window.name));
     }
 
+    function toSearch(){
+        $(".order-add").hide();
+        $(".order-list").show();
+    }
+</script>
+
+
+<script>
+    $(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);
+                    }
+                })
+//                $("#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) {
+                            selectOrderInfo(data.returnMsg.orderId);
+                        } else {
+                            layer.close(index);
+                        }
+                        return ;
+                    });
+                }
+            }
+        })
+    })
+
     /**
      * 打开添加订单的页面
      */
     function addOrder(){
-        layer_show("添加订单信息","${path}/admin/customer/add_order","900","380");
+        $(".order-add").show();
+        $(".order-list").hide();
+
+        /*初始化产品*/
+        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 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>

+ 17 - 8
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_list.ftl

@@ -94,8 +94,9 @@
                     <td class="text-c" width="100">${detect.detectResults!}</td>
                     <td class="text-c" width="100">${detect.detectPoint!}</td>
                     <td class="text-c" width="100">${detect.detectAnalysis!}</td>
-                    <td class="text-c" width="100">${detect.customerId!}</td>
+                    <td class="text-c" width="100">${detect.questionTitle!}<br><#if detect.questionTitle??><#if detect.questionTitle != ""><a href="#" onclick="getDescribeInfo(${detect.customerId!});" style="color : #4149FF;">查看详情</a></#if></#if></td>
                     <td class="text-c" width="100">
+                    <#if detect.detectIsMaintenance??>
                         <#if detect.detectIsMaintenance == 2>
                             不需要转入
                         <#else >
@@ -106,6 +107,7 @@
                                 已转入
                             </#if>
                         </#if>
+                    </#if>
                     </td>
                     <td class="text-c" width="100">${detect.detectDesc!}</td>
                     <td class="text-c" width="100">${(detect.detectDate?string("yyyy-MM-dd"))!''}</td>
@@ -115,12 +117,14 @@
                            onclick="add_remark('修改备注','${path}/admin/detect/to_add_remark?detectId=${detect.detectId!''}','570','450');">
                             <i class="Hui-iconfont">&#xe6df;</i>
                         </a>
-                        <#if detect.detectIsMaintenance == 2>
-                            <a style="text-decoration:none" href="javascript:;" title="需要转入生产"
-                               onclick="update_info('需要转入生产','${path}/admin/detect/to_produced_info?detectId=${detect.detectId!''}&state=1','570','450');">
-                                <i class="Hui-iconfont">&#xe644;</i>
-                            </a>
-                        <#else >
+                       <#if detect.detectIsMaintenance??>
+                            <#if detect.detectIsMaintenance == 2>
+                                <a style="text-decoration:none" href="javascript:;" title="需要转入生产"
+                                   onclick="update_info('需要转入生产','${path}/admin/detect/to_produced_info?detectId=${detect.detectId!''}&state=1','570','450');">
+                                    <i class="Hui-iconfont">&#xe644;</i>
+                                </a>
+                            <#else >
+                        </#if>
                             <#if detect.detectRevolutionProduced == 1>
                                 <a style="text-decoration:none" href="javascript:;" title="转入生产"
                                    onclick="update_info('转入生产','${path}/admin/detect/to_detect_complete?detectId=${detect.detectId!''}&state=2','570','450');">
@@ -170,7 +174,12 @@
     function update_info(title,url,w,h){
         layer_show(title,url,w,h);
     }
-
+    /**
+     * 进入查询问题描述信息页面
+     */
+    function getDescribeInfo(customerId) {
+        layer_show("问题描述","${path}/admin/customer/_question_describe?customerId="+customerId,"800","500");
+    }
 </script>
 </body>
 </html>

+ 9 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/maintenance/maintenance_list.ftl

@@ -104,7 +104,9 @@
                     </#if>
                     </td>
                     <td class="text-c" width="100">
-                        ${maintenanceInfo.customerIdDescribe!}
+                    ${maintenanceInfo.customerIdDescribe!}<br>
+                    <#if maintenanceInfo.customerIdDescribe??><#if maintenanceInfo.customerIdDescribe != ""><a href="#" onclick="getDescribeInfo(${maintenanceInfo.maintenanceCustomerId!});" style="color : #4149FF;">查看详情</a></#if></#if>
+
                     </td>
                     <td class="text-c" width="100">
                         <#if maintenanceInfo.maintenanceIsRepair == 1>
@@ -169,6 +171,12 @@
     function add_maintenance(title,url,w,h){
         layer_show(title,url,w,h);
     }
+    /**
+     * 进入查询问题描述信息页面
+     */
+    function getDescribeInfo(customerId) {
+        layer_show("问题描述","${path}/admin/customer/_question_describe?customerId="+customerId,"800","500");
+    }
 </script>
 </body>
 </html>

+ 7 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/signclosed/signclosed_list.ftl

@@ -169,7 +169,7 @@
                             不缺少
                         </#if>
                     </td>
-                    <td class="text-c" width="100">售后原因暂无</td>
+                    <td class="text-c" width="100">${signclosed.customerIdDescribe!}<br><#if signclosed.customerIdDescribe??><#if signclosed.customerIdDescribe != ""><a href="#" onclick="getDescribeInfo(${signclosed.signclosedCustomerId!});"style="color : #4149FF;">查看详情</a></#if></#if></td>
                     <td class="text-c" width="100">${signclosed.signclosedCustomerDesc!}</td>
                     <td class="text-c" width="100">${(signclosed.signclosedDate?string("yyyy-MM-dd"))!''}</td>
                     <td class="text-c" width="100">
@@ -243,6 +243,12 @@
     function update_info(url){
         window.location.href = url;
     }
+    /**
+     * 进入查询问题描述信息页面
+     */
+    function getDescribeInfo(customerId) {
+        layer_show("问题描述","${path}/admin/customer/_question_describe?customerId="+customerId,"800","500");
+    }
     /*转入品检*/
     function into_complaint(signclosedId){
         layer.alert('确定转入到品检部门吗?', function () {

+ 3 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/wap/cm/request_message.ftl

@@ -66,11 +66,11 @@
 <script type="text/javascript" src="${path}/common/lib/mui/js/city.data-3.js"></script>
 <script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
 <script>
-	var questionId=getQueryString("questionId");
+	var questionId=${questionId ! '1'};
 	//自己写的js
 	mui.ready(function() {
 		if(questionId!=null){
-		$.ajax('${path}/QA/get_question?dates=' + new Date().getTime(), {
+		$.ajax('${path}/get_question?dates=' + new Date().getTime(), {
 						data: {
 							"questionId":questionId
 						},
@@ -112,7 +112,7 @@
 			parameter["questionNotSolvedNum"] = 1;
 		}
 		
-		$.ajax('${path}/QA/update_question_num?dates=' + new Date().getTime(), {
+		$.ajax('${path}/update_question_num?dates=' + new Date().getTime(), {
 						data:parameter,
 						dataType: 'json',
 						xhrFields: {

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/wap/cm/send_message.ftl

@@ -65,7 +65,7 @@
 <script>
 	//自己写的js
 	mui.ready(function() {
-		$.ajax('${path}/QA/get_back_out_question?dates=' + new Date().getTime(), {
+		$.ajax('${path}/get_back_out_question?dates=' + new Date().getTime(), {
 						data: {},
 						dataType: 'json',
 						xhrFields: {
@@ -103,7 +103,7 @@
 			parameter["questionNotSolvedNum"] = 1;
 		}
 		
-		$.ajax('${path}/QA/update_question_num?dates=' + new Date().getTime(), {
+		$.ajax('${path}/update_question_num?dates=' + new Date().getTime(), {
 						data:parameter,
 						dataType: 'json',
 						xhrFields: {

+ 15 - 3
watero-rst-web/src/main/webapp/common/js/common/common.js

@@ -65,7 +65,7 @@ function Trim(str)
  * @returns {{}}
  */
 function listProvince(provinceId,provinceName){
-    var province = {};
+    var province = new Array();
     $.ajax({
         type: "get",
         data: {
@@ -93,7 +93,7 @@ function listProvince(provinceId,provinceName){
  * 获取市
  */
 function listCity(provinceId,cityName){
-    var city = {};
+    var city = new Array();
     $.ajax({
         type: "get",
         data: {
@@ -119,7 +119,7 @@ function listCity(provinceId,cityName){
  * 获取区
  */
 function listDistrict(cityId,districtName){
-    var district = {};
+    var district = new Array();
     $.ajax({
         type: "get",
         data: {
@@ -153,6 +153,18 @@ function keyFun(node){
     }
 }
 
+/**
+ * 用于展示错误信息,并让该节点得到焦点
+ */
+function vailErrorMsg(node,msg){
+    layer.msg(msg, {icon: 5, time: 3000});
+    node.select();
+    window.setTimeout(function(){
+        node.focus();
+    },0);
+    $("html,body").animate({scrollTop:node.offset().top},300);//1000是ms,也可以用slow代替
+}
+
 
 /**物流名称替换**/
 function replace(code) {