liuzhiwei 7 лет назад
Родитель
Сommit
3c56e3bf9f
65 измененных файлов с 3592 добавлено и 245 удалено
  1. 39 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintDetectInfo.java
  2. 11 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java
  3. 11 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/Product.java
  4. 23 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/AwaitingSignclosedProductInfoService.java
  5. 35 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintDetectInfoService.java
  6. 24 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintMaintenanceInfoService.java
  7. 33 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintQuestionInfoService.java
  8. 24 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedInfoService.java
  9. 24 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedProductInfoService.java
  10. 33 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSmallClassInfoService.java
  11. 30 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintTypeInfoService.java
  12. 36 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/FittingsInfoService.java
  13. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java
  14. 27 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/AwaitingSignclosedProductInfoServiceImpl.java
  15. 43 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintDetectInfoServiceImpl.java
  16. 32 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintMaintenanceInfoServiceImpl.java
  17. 41 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintQuestionInfoServiceImpl.java
  18. 33 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedInfoServiceImpl.java
  19. 33 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedProductInfoServiceImpl.java
  20. 37 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSmallClassInfoServiceImpl.java
  21. 40 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintTypeInfoServiceImpl.java
  22. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/AwaitingSignclosedProductInfoMapper.java
  23. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintDetectInfoMapper.java
  24. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintQuestionInfoMapper.java
  25. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintSmallClassInfoMapper.java
  26. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintTypeInfoMapper.java
  27. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/FittingsInfoMapper.java
  28. 37 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/FittingsInfoServiceImpl.java
  29. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/awaitingSignclosedProductInfoMapper.xml
  30. 78 4
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintDetectInfoMapper.xml
  31. 19 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintQuestionInfoMapper.xml
  32. 13 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSmallClassInfoMapper.xml
  33. 14 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintTypeInfoMapper.xml
  34. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/fittingsInfoMapper.xml
  35. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java
  36. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java
  37. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml
  38. 45 4
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  39. 126 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminDetectController.java
  40. 102 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/ComplaintQuestionInfoController.java
  41. 1 1
      watero-rst-web/src/main/resources/watero-rst-orm.xml
  42. 521 233
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl
  43. 125 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/custome_list.ftl
  44. 140 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/order_list.ftl
  45. 169 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/add_detect.ftl
  46. 137 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_list.ftl
  47. BIN
      watero-rst-web/src/main/webapp/common/images/cm/search.png
  48. BIN
      watero-rst-web/src/main/webapp/common/images/cm/select-1.png
  49. 177 0
      watero-rst-web/src/main/webapp/common/lib/cm.lib/airCity.js
  50. 80 0
      watero-rst-web/src/main/webapp/common/lib/cm.lib/dimensions.js
  51. 61 0
      watero-rst-web/src/main/webapp/common/lib/cm.lib/jquery.provincesCity.js
  52. 693 0
      watero-rst-web/src/main/webapp/common/lib/cm.lib/provincesData.js
  53. 176 0
      watero-rst-web/src/main/webapp/common/lib/cm.lib/suggest.js
  54. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/aero.png
  55. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/blue.png
  56. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/green.png
  57. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/grey.png
  58. 182 0
      watero-rst-web/src/main/webapp/common/lib/icheck/icheck.css
  59. 9 0
      watero-rst-web/src/main/webapp/common/lib/icheck/jquery.icheck.min.js
  60. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/minimal.png
  61. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/orange.png
  62. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/pink.png
  63. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/purple.png
  64. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/red.png
  65. BIN
      watero-rst-web/src/main/webapp/common/lib/icheck/yellow.png

+ 39 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintDetectInfo.java

@@ -14,9 +14,10 @@ public class ComplaintDetectInfo implements Serializable {
     private Integer detectId;//id
     private Integer customerId;//客诉id
     private Integer signclosedId;//签收ID
+    private Integer productId;//产品ID
     private Integer detectProductType;//产品类型
     private String detectProductNumber;//产品型号
-    private Integer detectState;//状态
+    private Integer detectState;//状态 1待仓库转入 2正在检查  3检查通过  4检查未通过
     private String detectPhenomenon;//工厂检测现象
     private String detectFailureClassification;//故障分类
     private String detectFailureCause;//故障原因
@@ -28,6 +29,11 @@ public class ComplaintDetectInfo implements Serializable {
     private String detectDesc;//备注
     private Date signclosedCreateTime;//创建时间
     private Date signclosedUpdateTime;//修改时间
+    private String machineNo;//机器编号
+
+    private String questionTitle;//问题标题
+    private String detectIsMaintenance;//是否需要维修
+
 
     public Integer getDetectId() {
         return detectId;
@@ -164,4 +170,36 @@ public class ComplaintDetectInfo implements Serializable {
     public void setSignclosedUpdateTime(Date signclosedUpdateTime) {
         this.signclosedUpdateTime = signclosedUpdateTime;
     }
+
+    public String getQuestionTitle() {
+        return questionTitle;
+    }
+
+    public void setQuestionTitle(String questionTitle) {
+        this.questionTitle = questionTitle;
+    }
+
+    public Integer getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Integer productId) {
+        this.productId = productId;
+    }
+
+    public String getMachineNo() {
+        return machineNo;
+    }
+
+    public void setMachineNo(String machineNo) {
+        this.machineNo = machineNo;
+    }
+
+    public String getDetectIsMaintenance() {
+        return detectIsMaintenance;
+    }
+
+    public void setDetectIsMaintenance(String detectIsMaintenance) {
+        this.detectIsMaintenance = detectIsMaintenance;
+    }
 }

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

@@ -44,6 +44,9 @@ public class CustomerInfo  implements Serializable {
     //  修改时间 ,
     private Date customerUpdateTime;
 
+    //  问题标题
+    private String customerQuestionTitle;
+
     public Integer getCustomerId() {
         return customerId;
     }
@@ -179,4 +182,12 @@ public class CustomerInfo  implements Serializable {
     public void setCustomerUpdateTime(Date customerUpdateTime) {
         this.customerUpdateTime = customerUpdateTime;
     }
+
+    public String getCustomerQuestionTitle() {
+        return customerQuestionTitle;
+    }
+
+    public void setCustomerQuestionTitle(String customerQuestionTitle) {
+        this.customerQuestionTitle = customerQuestionTitle;
+    }
 }

+ 11 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/Product.java

@@ -33,6 +33,9 @@ public class Product implements Serializable {
 
     private Integer productType;        //商品类型
 
+    private String productNumber;        //产品型号
+
+
     private List<ProductColor> colorList = new ArrayList<ProductColor>();   //产品颜色集合
 
     public Integer getProductId() {
@@ -107,6 +110,14 @@ public class Product implements Serializable {
         this.colorList = colorList;
     }
 
+    public String getProductNumber() {
+        return productNumber;
+    }
+
+    public void setProductNumber(String productNumber) {
+        this.productNumber = productNumber;
+    }
+
     @Override
     public String toString() {
         return "Product{" +

+ 23 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/AwaitingSignclosedProductInfoService.java

@@ -0,0 +1,23 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
+
+/**
+ * 客诉-待签收产品service
+ */
+public interface AwaitingSignclosedProductInfoService {
+    /**
+     * 添加单个待签收产品
+     * @return
+     */
+    int insert(AwaitingSignclosedProductInfo record);
+    /**
+     * 获取单个待签收产品
+     */
+    AwaitingSignclosedProductInfo getByPrimaryId(Integer productId);
+    /**
+     * 修改单个待签收产品
+     * @return
+     */
+    int updateById(AwaitingSignclosedProductInfo record);
+}

+ 35 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintDetectInfoService.java

@@ -0,0 +1,35 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+import com.iamberry.rst.core.order.Order;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+
+import java.util.List;
+
+/**
+ * 客诉-品质检测产品service
+ */
+public interface ComplaintDetectInfoService {
+    /**
+     * 添加单个品质检测产品
+     * @return
+     */
+    int insert(ComplaintDetectInfo record);
+    /**
+     * 查询单个品质检测产品
+     * @return
+     */
+    ComplaintDetectInfo getComplaintDetectById(Integer detectId);
+    /**
+     * 修改单个待品质检测产品
+     * @return
+     */
+    int updateComplaintDetectById(ComplaintDetectInfo record);
+
+    /**
+     * 获取品质检测列表
+     * @return
+     */
+    PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest);
+}

+ 24 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintMaintenanceInfoService.java

@@ -0,0 +1,24 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.ComplaintMaintenanceInfo;
+
+/**
+ * 客诉-生产维修Service
+ */
+public interface ComplaintMaintenanceInfoService {
+    /**
+     * 添加单个品质检测产品
+     * @return
+     */
+    int insert(ComplaintMaintenanceInfo record);
+    /**
+     * 查询单个品质检测产品
+     * @return
+     */
+    ComplaintMaintenanceInfo getMaintenanceByid(Integer maintenanceId);
+    /**
+     * 修改单个品质检测产品
+     * @return
+     */
+    int updateMaintenanceById(ComplaintMaintenanceInfo record);
+}

+ 33 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintQuestionInfoService.java

@@ -0,0 +1,33 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.ComplaintQuestionInfo;
+import com.iamberry.rst.core.cm.ComplaintSmallClassInfo;
+
+import java.util.List;
+
+/**
+ * 客诉-客诉问题Service
+ */
+public interface ComplaintQuestionInfoService {
+    /**
+     * 添加单个客诉问题
+     * @return
+     */
+    int insert(ComplaintQuestionInfo record);
+    /**
+     * 查询单个客诉问题
+     * @return
+     */
+    ComplaintQuestionInfo getQuestionById(Integer questionId);
+    /**
+     * 修改单个客诉问题
+     * @return
+     */
+    int updateQuestionById(ComplaintQuestionInfo record);
+
+    /**
+     * 查询所有客诉类型
+     * @return
+     */
+    List<ComplaintQuestionInfo> listComplaintQuestionInfo(ComplaintQuestionInfo complaintQuestionInfo);
+}

+ 24 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedInfoService.java

@@ -0,0 +1,24 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+
+/**
+ * 客诉-签收表Service
+ */
+public interface ComplaintSignclosedInfoService {
+    /**
+     * 添加单个签收记录
+     * @return
+     */
+    int insert(ComplaintSignclosedInfo record);
+    /**
+     * 查询单个签收记录
+     * @return
+     */
+    ComplaintSignclosedInfo getSignclosedById(Integer signclosedId);
+    /**
+     * 修改单个签收记录
+     * @return
+     */
+    int updateSignclosedById(ComplaintSignclosedInfo record);
+}

+ 24 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedProductInfoService.java

@@ -0,0 +1,24 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.SignclosedProductInfo;
+
+/**
+ * 客诉-签收产品表Service
+ */
+public interface ComplaintSignclosedProductInfoService {
+    /**
+     * 添加单个签收产品记录
+     * @return
+     */
+    int insert(SignclosedProductInfo record);
+    /**
+     * 查询单个签收产品记录
+     * @return
+     */
+    SignclosedProductInfo getSignclosedById(Integer productId);
+    /**
+     * 修改单个签收产品记录
+     * @return
+     */
+    int updateSignclosedById(SignclosedProductInfo record);
+}

+ 33 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSmallClassInfoService.java

@@ -0,0 +1,33 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.ComplaintSmallClassInfo;
+
+import java.util.List;
+
+/**
+ * 客诉-客诉小类Service
+ */
+public interface ComplaintSmallClassInfoService {
+    /**
+     * 添加单个客诉小类
+     * @return
+     */
+    int insert(ComplaintSmallClassInfo record);
+    /**
+     * 查询单个客诉小类
+     * @return
+     */
+    ComplaintSmallClassInfo getSmallClassById(Integer smallClassId);
+    /**
+     * 修改单个客诉小类
+     * @return
+     */
+    int updateSmallClassById(ComplaintSmallClassInfo record);
+
+    /**
+     * 查询所有客诉类型
+     * @return
+     */
+    List<ComplaintSmallClassInfo> listComplaintSmallClassInfo(ComplaintSmallClassInfo complaintSmallClassInfo);
+
+}

+ 30 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintTypeInfoService.java

@@ -0,0 +1,30 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.ComplaintTypeInfo;
+
+import java.util.List;
+
+/**
+ * 客诉-客诉类型表Service
+ */
+public interface ComplaintTypeInfoService {
+    /**
+     * 添加单个客诉类型
+     * @return
+     */
+    int insert(ComplaintTypeInfo record);
+    /**
+     * 查询单个客诉类型
+     * @return
+     */
+    ComplaintTypeInfo getTypeById(Integer complaintId);
+    /**
+     * 修改单个客诉类型
+     * @return
+     */
+    int updateTypeById(ComplaintTypeInfo record);
+
+    /*查询问题分类*/
+    List<ComplaintTypeInfo> listComplaintTypeInfo(ComplaintTypeInfo complaintTypeInfo);
+
+}

+ 36 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/FittingsInfoService.java

@@ -0,0 +1,36 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.FittingsInfo;
+
+import java.util.List;
+
+/**
+ * 客诉-产品配件service
+ */
+public interface FittingsInfoService {
+    /**
+     * 添加配件信息
+     * @param fittingsInfo
+     * @return
+     */
+    Integer addFittingsInfo(FittingsInfo fittingsInfo);
+
+    /**
+     * 根据id查询配件信息
+     * @param fittingsId
+     * @return
+     */
+    FittingsInfo getFittingsById(Integer fittingsId);
+
+    /**
+     * 修改配件信息
+     * @param fittingsInfo
+     * @return
+     */
+    Integer updateFittingsInfo(FittingsInfo fittingsInfo);
+    /**
+     * 查询所有配件信息
+     * @return
+     */
+    List<FittingsInfo> listFittings();
+}

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

@@ -1,5 +1,6 @@
 package com.iamberry.rst.faces.product;
 
+import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.product.Gift;
 import com.iamberry.rst.core.product.OrderGift;
@@ -40,6 +41,12 @@ public interface ProductService {
     List<Gift> listGiftByRentType(Integer rentType);
 
     /**
+     * 获取所有水机  奶机
+     * @return
+     */
+    List<Product> listProduce();
+
+    /**
      * 查询产品和产品颜色集合
      * @param productColor
      * @return

+ 27 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/AwaitingSignclosedProductInfoServiceImpl.java

@@ -0,0 +1,27 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
+import com.iamberry.rst.faces.cm.AwaitingSignclosedProductInfoService;
+import com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+@Service
+public class AwaitingSignclosedProductInfoServiceImpl implements AwaitingSignclosedProductInfoService {
+    @Autowired
+    private AwaitingSignclosedProductMapper awaitingSignclosedProductMapper;
+    @Override
+    public int insert(AwaitingSignclosedProductInfo record) {
+        return awaitingSignclosedProductMapper.insert(record);
+    }
+
+    @Override
+    public AwaitingSignclosedProductInfo getByPrimaryId(Integer productId) {
+        return awaitingSignclosedProductMapper.getByPrimaryId(productId);
+    }
+
+    @Override
+    public int updateById(AwaitingSignclosedProductInfo record) {
+        return awaitingSignclosedProductMapper.updateById(record);
+    }
+}

+ 43 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintDetectInfoServiceImpl.java

@@ -0,0 +1,43 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+import com.iamberry.rst.core.order.Order;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
+import com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintDetectInfoMapper;
+import com.iamberry.rst.util.PageUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoService {
+    @Autowired
+    private ComplaintDetectInfoMapper complaintDetectInfoMapper;
+
+    @Override
+    public int insert(ComplaintDetectInfo record) {
+        return complaintDetectInfoMapper.insert(record);
+    }
+
+    @Override
+    public ComplaintDetectInfo getComplaintDetectById(Integer detectId) {
+        return complaintDetectInfoMapper.getComplaintDetectById(detectId);
+    }
+
+    @Override
+    public int updateComplaintDetectById(ComplaintDetectInfo record) {
+        return complaintDetectInfoMapper.updateComplaintDetectById(record);
+    }
+    @Override
+    public PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest) {
+        PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
+        List<ComplaintDetectInfo> detedctList = complaintDetectInfoMapper.listComplaintDetect(pageRequest.getData());
+        return PageUtil.getPage(detedctList);
+    }
+}

+ 32 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintMaintenanceInfoServiceImpl.java

@@ -0,0 +1,32 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+import com.iamberry.rst.core.cm.ComplaintMaintenanceInfo;
+import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
+import com.iamberry.rst.faces.cm.ComplaintMaintenanceInfoService;
+import com.iamberry.rst.service.cm.mapper.ComplaintDetectInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintMaintenanceInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ComplaintMaintenanceInfoServiceImpl implements ComplaintMaintenanceInfoService {
+    @Autowired
+    private ComplaintMaintenanceInfoMapper complaintMaintenanceInfoMapper;
+
+    @Override
+    public int insert(ComplaintMaintenanceInfo record) {
+        return complaintMaintenanceInfoMapper.insert(record);
+    }
+
+    @Override
+    public ComplaintMaintenanceInfo getMaintenanceByid(Integer maintenanceId) {
+        return complaintMaintenanceInfoMapper.getMaintenanceByid(maintenanceId);
+    }
+
+    @Override
+    public int updateMaintenanceById(ComplaintMaintenanceInfo record) {
+        return complaintMaintenanceInfoMapper.updateMaintenanceById(record);
+    }
+}

+ 41 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintQuestionInfoServiceImpl.java

@@ -0,0 +1,41 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+import com.iamberry.rst.core.cm.ComplaintQuestionInfo;
+import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
+import com.iamberry.rst.faces.cm.ComplaintQuestionInfoService;
+import com.iamberry.rst.service.cm.mapper.ComplaintDetectInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintQuestionInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ComplaintQuestionInfoServiceImpl implements ComplaintQuestionInfoService {
+    @Autowired
+    private ComplaintQuestionInfoMapper complaintDetectInfoMapper;
+
+    @Override
+    public int insert(ComplaintQuestionInfo record) {
+        return complaintDetectInfoMapper.insert(record);
+    }
+
+    @Override
+    public ComplaintQuestionInfo getQuestionById(Integer questionId) {
+        return complaintDetectInfoMapper.getQuestionById(questionId);
+    }
+
+    @Override
+    public int updateQuestionById(ComplaintQuestionInfo record) {
+        return complaintDetectInfoMapper.updateQuestionById(record);
+    }
+
+    @Override
+    public List<ComplaintQuestionInfo> listComplaintQuestionInfo(ComplaintQuestionInfo complaintQuestionInfo) {
+        return complaintDetectInfoMapper.listComplaintQuestionInfo(complaintQuestionInfo);
+    }
+
+
+}

+ 33 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedInfoServiceImpl.java

@@ -0,0 +1,33 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.ComplaintQuestionInfo;
+import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+import com.iamberry.rst.faces.cm.ComplaintQuestionInfoService;
+import com.iamberry.rst.faces.cm.ComplaintSignclosedInfoService;
+import com.iamberry.rst.service.cm.mapper.ComplaintQuestionInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedInfoService {
+    @Autowired
+    private ComplaintSignclosedInfoMapper complaintSignclosedInfoMapper;
+
+
+    @Override
+    public int insert(ComplaintSignclosedInfo record) {
+        return complaintSignclosedInfoMapper.insert(record);
+    }
+
+    @Override
+    public ComplaintSignclosedInfo getSignclosedById(Integer signclosedId) {
+        return complaintSignclosedInfoMapper.getSignclosedById(signclosedId);
+    }
+
+    @Override
+    public int updateSignclosedById(ComplaintSignclosedInfo record) {
+        return complaintSignclosedInfoMapper.updateSignclosedById(record);
+    }
+}

+ 33 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedProductInfoServiceImpl.java

@@ -0,0 +1,33 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+import com.iamberry.rst.core.cm.SignclosedProductInfo;
+import com.iamberry.rst.faces.cm.ComplaintSignclosedInfoService;
+import com.iamberry.rst.faces.cm.ComplaintSignclosedProductInfoService;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedProductInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ComplaintSignclosedProductInfoServiceImpl implements ComplaintSignclosedProductInfoService {
+    @Autowired
+    private ComplaintSignclosedProductInfoMapper complaintSignclosedProductInfoMapper;
+
+
+    @Override
+    public int insert(SignclosedProductInfo record) {
+        return complaintSignclosedProductInfoMapper.insert(record);
+    }
+
+    @Override
+    public SignclosedProductInfo getSignclosedById(Integer productId) {
+        return complaintSignclosedProductInfoMapper.getSignclosedById(productId);
+    }
+
+    @Override
+    public int updateSignclosedById(SignclosedProductInfo record) {
+        return complaintSignclosedProductInfoMapper.updateSignclosedById(record);
+    }
+}

+ 37 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSmallClassInfoServiceImpl.java

@@ -0,0 +1,37 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.ComplaintSmallClassInfo;
+import com.iamberry.rst.faces.cm.ComplaintSmallClassInfoService;
+import com.iamberry.rst.service.cm.mapper.ComplaintSmallClassInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ComplaintSmallClassInfoServiceImpl implements ComplaintSmallClassInfoService {
+    @Autowired
+    private ComplaintSmallClassInfoMapper complaintSmallClassInfoMapper;
+
+
+    @Override
+    public int insert(ComplaintSmallClassInfo record) {
+        return complaintSmallClassInfoMapper.insert(record);
+    }
+
+    @Override
+    public ComplaintSmallClassInfo getSmallClassById(Integer smallClassId) {
+        return complaintSmallClassInfoMapper.getSmallClassById(smallClassId);
+    }
+
+    @Override
+    public int updateSmallClassById(ComplaintSmallClassInfo record) {
+        return complaintSmallClassInfoMapper.updateSmallClassById(record);
+    }
+
+    @Override
+    public List<ComplaintSmallClassInfo> listComplaintSmallClassInfo(ComplaintSmallClassInfo complaintSmallClassInfo) {
+        return complaintSmallClassInfoMapper.listComplaintSmallClassInfo(complaintSmallClassInfo);
+    }
+}

+ 40 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintTypeInfoServiceImpl.java

@@ -0,0 +1,40 @@
+package com.iamberry.rst.service.cm;
+
+
+import com.iamberry.rst.core.cm.ComplaintSmallClassInfo;
+import com.iamberry.rst.core.cm.ComplaintTypeInfo;
+import com.iamberry.rst.faces.cm.ComplaintSmallClassInfoService;
+import com.iamberry.rst.faces.cm.ComplaintTypeInfoService;
+import com.iamberry.rst.service.cm.mapper.ComplaintSmallClassInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintTypeInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ComplaintTypeInfoServiceImpl implements ComplaintTypeInfoService {
+    @Autowired
+    private ComplaintTypeInfoMapper complaintTypeInfoMapper;
+
+
+    @Override
+    public int insert(ComplaintTypeInfo record) {
+        return complaintTypeInfoMapper.insert(record);
+    }
+
+    @Override
+    public ComplaintTypeInfo getTypeById(Integer complaintId) {
+        return complaintTypeInfoMapper.getTypeById(complaintId);
+    }
+
+    @Override
+    public int updateTypeById(ComplaintTypeInfo record) {
+        return complaintTypeInfoMapper.updateTypeById(record);
+    }
+
+    @Override
+    public List<ComplaintTypeInfo> listComplaintTypeInfo(ComplaintTypeInfo complaintTypeInfo) {
+        return complaintTypeInfoMapper.listComplaintTypeInfo(complaintTypeInfo);
+    }
+}

+ 1 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/AwaitingSignclosedProductInfoMapper.java

@@ -4,7 +4,7 @@ import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
 /**
  * 客诉-待签收产品mapper
  */
-public interface AwaitingSignclosedProductInfoMapper {
+public interface AwaitingSignclosedProductMapper {
     /**
      * 添加单个待签收产品
      * @return

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintDetectInfoMapper.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+
+import java.util.List;
+
 /**
  * 客诉-品质检测产品mapper
  */
@@ -20,4 +23,10 @@ public interface ComplaintDetectInfoMapper {
      * @return
      */
     int updateComplaintDetectById(ComplaintDetectInfo record);
+
+    /**
+     * 获取品质检测列表
+     * @return
+     */
+    List<ComplaintDetectInfo> listComplaintDetect(ComplaintDetectInfo record);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintQuestionInfoMapper.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.ComplaintQuestionInfo;
+
+import java.util.List;
+
 /**
  * 客诉-客诉问题mapper
  */
@@ -20,4 +23,10 @@ public interface ComplaintQuestionInfoMapper {
      * @return
      */
     int updateQuestionById(ComplaintQuestionInfo record);
+
+    /**
+     * 查询所有客诉类型
+     * @return
+     */
+    List<ComplaintQuestionInfo> listComplaintQuestionInfo(ComplaintQuestionInfo complaintQuestionInfo);
 }

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

@@ -1,6 +1,10 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.ComplaintSmallClassInfo;
+import com.iamberry.rst.core.cm.ComplaintTypeInfo;
+
+import java.util.List;
+
 /**
  * 客诉-客诉小类mapper
  */
@@ -20,4 +24,10 @@ public interface ComplaintSmallClassInfoMapper {
      * @return
      */
     int updateSmallClassById(ComplaintSmallClassInfo record);
+
+    /**
+     * 查询所有客诉类型
+     * @return
+     */
+    List<ComplaintSmallClassInfo> listComplaintSmallClassInfo(ComplaintSmallClassInfo complaintSmallClassInfo);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintTypeInfoMapper.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.ComplaintTypeInfo;
+
+import java.util.List;
+
 /**
  * 客诉-客诉类型表mapper
  */
@@ -20,4 +23,10 @@ public interface ComplaintTypeInfoMapper {
      * @return
      */
     int updateTypeById(ComplaintTypeInfo record);
+
+    /**
+     * 查询所有客诉类型
+     * @return
+     */
+    List<ComplaintTypeInfo> listComplaintTypeInfo(ComplaintTypeInfo complaintTypeInfo);
 }

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

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.FittingsInfo;
 
+import java.util.List;
+
 public interface FittingsInfoMapper {
 
     /**
@@ -24,4 +26,9 @@ public interface FittingsInfoMapper {
      * @return
      */
     Integer updateFittingsInfo(FittingsInfo fittingsInfo);
+    /**
+     * 查询所有配件信息
+     * @return
+     */
+    List<FittingsInfo> listFittings();
 }

+ 37 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/FittingsInfoServiceImpl.java

@@ -0,0 +1,37 @@
+package com.iamberry.rst.service.cm.mapper;
+
+
+import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
+import com.iamberry.rst.core.cm.FittingsInfo;
+import com.iamberry.rst.faces.cm.AwaitingSignclosedProductInfoService;
+import com.iamberry.rst.faces.cm.FittingsInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class FittingsInfoServiceImpl implements FittingsInfoService {
+    @Autowired
+    private FittingsInfoMapper fittingsInfoMapper;
+
+    @Override
+    public Integer addFittingsInfo(FittingsInfo fittingsInfo) {
+        return fittingsInfoMapper.addFittingsInfo(fittingsInfo);
+    }
+
+    @Override
+    public FittingsInfo getFittingsById(Integer fittingsId) {
+        return fittingsInfoMapper.getFittingsById(fittingsId);
+    }
+
+    @Override
+    public Integer updateFittingsInfo(FittingsInfo fittingsInfo) {
+        return fittingsInfoMapper.updateFittingsInfo(fittingsInfo);
+    }
+
+    @Override
+    public List<FittingsInfo> listFittings() {
+        return fittingsInfoMapper.listFittings();
+    }
+}

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

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductInfoMapper" >
+<mapper namespace="com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper" >
   <resultMap id="BaseResultMap" type="AwaitingSignclosedProductInfo" >
     <id column="product_id" property="productId" jdbcType="INTEGER" />
     <result column="signclosed_id" property="signclosedId" jdbcType="INTEGER" />

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

@@ -4,6 +4,8 @@
   <resultMap id="BaseResultMap" type="ComplaintDetectInfo" >
     <id column="detect_id" property="detectId" jdbcType="INTEGER" />
     <result column="customer_id" property="customerId" jdbcType="INTEGER" />
+    <result column="signclosed_id" property="signclosedId" jdbcType="INTEGER" />
+    <result column="product_id" property="productId" jdbcType="INTEGER" />
     <result column="detect_product_type" property="detectProductType" jdbcType="BIT" />
     <result column="detect_product_number" property="detectProductNumber" jdbcType="VARCHAR" />
     <result column="detect_state" property="detectState" jdbcType="BIT" />
@@ -18,12 +20,14 @@
     <result column="detect_desc" property="detectDesc" jdbcType="VARCHAR" />
     <result column="signclosed_create_time" property="signclosedCreateTime" jdbcType="TIMESTAMP" />
     <result column="signclosed_update_time" property="signclosedUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="machine_no" property="machineNo" jdbcType="VARCHAR" />
+    <result column="detect_is_maintenance" property="detectIsMaintenance" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >
-    detect_id, customer_id, detect_product_type, detect_product_number, detect_state, 
+    detect_id, customer_id,signclosed_id,product_id, detect_product_type, detect_product_number, detect_state,
     detect_phenomenon, detect_failure_classification, detect_failure_cause, detect_results, 
     detect_point, detect_analysis, detect_customer_id, detect_revolution_produced, detect_desc, 
-    signclosed_create_time, signclosed_update_time
+    signclosed_create_time, signclosed_update_time,detect_is_maintenance
   </sql>
   <select id="getComplaintDetectById" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
@@ -31,13 +35,79 @@
     from tb_rst_complaint_detect
     where detect_id = #{detectId,jdbcType=INTEGER}
   </select>
+
+  <select id="listComplaintDetect" resultMap="BaseResultMap" parameterType="ComplaintDetectInfo" >
+    select
+      cd.detect_id detectId,
+      cd.signclosed_id signclosedId,
+      cd.product_id productId,
+      cd.customer_id customerId,
+      cd.detect_product_type detectProductType,
+      cd.detect_product_number detectProductNumber,
+      cd.detect_state detectState,
+      cd.detect_phenomenon detectPhenomenon,
+      cd.detect_failure_classification detectFailureClassification,
+      cd.detect_failure_cause detectFailureCause,
+      cd.detect_results detectResults,
+      cd.detect_point detectPoint,
+      cd.detect_analysis detectAnalysis,
+      cd.detect_customer_id detectCustomerId,
+      cd.detect_revolution_produced detectRevolutionProduced,
+      cd.detect_desc detectDesc,
+      cd.signclosed_create_time signclosedCreateTime,
+      cd.signclosed_update_time signclosedUpdateTime,
+      cd.machine_no machineNo,
+      cd.detect_is_maintenance
+    from tb_rst_complaint_detect cd LEFT JOIN tb_rst_customer_info ci ON cd.customer_id = ci.customer_id
+    <where>
+      <if test="detectProductType != null and detectProductType != ''">
+        cd.detect_product_type = #{detectProductType,jdbcType=BIT}
+      </if>
+      <if test="detectProductNumber != null and detectProductNumber != ''" >
+       AND cd.detect_product_number = #{detectProductNumber,jdbcType=VARCHAR}
+      </if>
+      <if test="detectState != null and detectState != ''" >
+       AND cd.detect_state = #{detectState,jdbcType=BIT}
+      </if>
+      <if test="detectPhenomenon != null and detectPhenomenon != ''" >
+       AND cd.detect_phenomenon like CONCAT('%',#{detectPhenomenon,jdbcType=VARCHAR},'%')
+      </if>
+      <if test="detectFailureClassification != null and detectFailureClassification != ''" >
+        AND cd.detect_failure_classification like CONCAT('%',#{detectFailureClassification,jdbcType=VARCHAR},'%')
+      </if>
+      <if test="detectFailureCause != null and detectFailureCause != ''" >
+        AND cd.detect_failure_cause like CONCAT('%',#{detectFailureCause,jdbcType=VARCHAR},'%')
+      </if>
+      <if test="detectResults != null and detectResults != ''" >
+        AND cd.detect_results like CONCAT('%',#{detectResults,jdbcType=VARCHAR},'%')
+      </if>
+      <if test="detectPoint != null and detectPoint != ''" >
+        AND cd.detect_point like CONCAT('%',#{detectPoint,jdbcType=VARCHAR},'%')
+      </if>
+      <if test="detectAnalysis != null and detectAnalysis != ''" >
+        AND cd.detect_analysis like CONCAT('%',#{detectAnalysis,jdbcType=VARCHAR},'%')
+      </if>
+      <if test="detectCustomerId != null and detectCustomerId != ''" >
+        AND cd.detect_customer_id = #{detectCustomerId,jdbcType=INTEGER}
+      </if>
+      <if test="detectRevolutionProduced != null and detectRevolutionProduced != ''" >
+        AND cd.detect_revolution_produced = #{detectRevolutionProduced,jdbcType=BIT}
+      </if>
+      <if test="questionTitle != null and questionTitle != ''" >
+        AND ci.customer_question_title like CONCAT('%',#{questionTitle},'%')
+      </if>
+      <if test="detectIsMaintenance != null and detectIsMaintenance != ''" >
+        AND cd.detect_is_maintenance = #{detectIsMaintenance,jdbcType=BIT}
+      </if>
+    </where>
+  </select>
   <insert id="insert" parameterType="ComplaintDetectInfo" >
-    insert into tb_rst_complaint_detect (detect_id, customer_id, detect_product_type, 
+    insert into tb_rst_complaint_detect (detect_id, customer_id,signclosed_id,product_id, detect_product_type,
       detect_product_number, detect_state, detect_phenomenon, 
       detect_failure_classification, detect_failure_cause, 
       detect_results, detect_point, detect_analysis, 
       detect_customer_id, detect_revolution_produced, 
-      detect_desc, signclosed_create_time, signclosed_update_time
+      detect_desc, signclosed_create_time, signclosed_update_time,machine_no,detect_is_maintenance
       )
     values (#{detectId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{detectProductType,jdbcType=BIT}, 
       #{detectProductNumber,jdbcType=VARCHAR}, #{detectState,jdbcType=BIT}, #{detectPhenomenon,jdbcType=VARCHAR}, 
@@ -45,6 +115,7 @@
       #{detectResults,jdbcType=VARCHAR}, #{detectPoint,jdbcType=VARCHAR}, #{detectAnalysis,jdbcType=VARCHAR}, 
       #{detectCustomerId,jdbcType=INTEGER}, #{detectRevolutionProduced,jdbcType=BIT}, 
       #{detectDesc,jdbcType=VARCHAR}, #{signclosedCreateTime,jdbcType=TIMESTAMP}, #{signclosedUpdateTime,jdbcType=TIMESTAMP}
+      ,#{machineNo,jdbcType=TIMESTAMP},#{detectIsMaintenance,jdbcType=BIT}
       )
   </insert>
 
@@ -96,6 +167,9 @@
       <if test="signclosedUpdateTime != null" >
         signclosed_update_time = #{signclosedUpdateTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="detectIsMaintenance != null" >
+        detect_is_maintenance = #{detectIsMaintenance,jdbcType=TIMESTAMP}
+      </if>
     </set>
     where detect_id = #{detectId,jdbcType=INTEGER}
   </update>

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

@@ -28,6 +28,25 @@
     from tb_rst_complaint_question
     where question_id = #{questionId,jdbcType=INTEGER}
   </select>
+
+  <select id="listComplaintQuestionInfo" resultMap="BaseResultMap" parameterType="ComplaintQuestionInfo" >
+    select
+    question_id, small_class_id, question_name, question_state, question_is_qc_detect,question_profile,
+    question_create_time, question_update_time
+    from tb_rst_complaint_question
+    <where>
+      <if test="smallClassId !=null">
+        AND small_class_id = #{smallClassId}
+      </if>
+      <if test="questionName !=null and questionName !=''">
+        AND question_name like CONCAT('%',#{questionName},'%')
+      </if>
+      AND question_state = 1
+    </where>
+    ORDER BY question_create_time DESC
+    limit 0,3
+  </select>
+
   <insert id="insert" parameterType="ComplaintQuestionInfo" >
     insert into tb_rst_complaint_question (question_id, small_class_id, question_name, 
       question_state, question_is_qc_detect, question_create_time, 

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

@@ -21,6 +21,19 @@
     from tb_rst_complaint_small_class
     where small_class_id = #{smallClassId,jdbcType=INTEGER}
   </select>
+
+  <select id="listComplaintSmallClassInfo" resultMap="BaseResultMap" parameterType="ComplaintSmallClassInfo" >
+    select
+    <include refid="Base_Column_List" />
+    from tb_rst_complaint_small_class
+    <where>
+      <if test="complaintId !=null">
+        AND complaint_id = #{complaintId}
+      </if>
+      AND small_class_state = 1
+    </where>
+  </select>
+
   <insert id="insert" parameterType="ComplaintSmallClassInfo" >
     insert into tb_rst_complaint_small_class (small_class_id, complaint_id, small_class_name, 
       small_class_profile, small_class_state, small_question_num, 

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

@@ -20,6 +20,20 @@
     from tb_rst_complaint_type
     where complaint_id = #{complaintId,jdbcType=INTEGER}
   </select>
+
+  <select id="listComplaintTypeInfo" resultMap="BaseResultMap" parameterType="ComplaintTypeInfo" >
+    select
+    <include refid="Base_Column_List" />
+    from tb_rst_complaint_type
+    <where>
+      <if test="complaintConsultingType !=null">
+        AND complaint_consulting_type = #{complaintConsultingType}
+      </if>
+      AND complaint_class_state = 1
+    </where>
+  </select>
+
+
   <insert id="insert" parameterType="ComplaintTypeInfo" >
     insert into tb_rst_complaint_type (complaint_id, complaint_consulting_type, 
       complaint_class_name, complaint_class_profile, 

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

@@ -24,6 +24,13 @@
     where fittings_id = #{fittingsId,jdbcType=INTEGER}
   </select>
 
+  <!-- 查询所有配件信息 -->
+  <select id="listFittings" resultType="FittingsInfo">
+    select
+    <include refid="fittingsInfo" />
+    from tb_rst_product_fittings
+  </select>
+
   <!-- 添加配件信息 -->
   <insert id="addFittingsInfo" parameterType="FittingsInfo" keyProperty="fittingsId" useGeneratedKeys="true" >
     insert into tb_rst_product_fittings (fittings_id, product_id, fittings_name, 

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

@@ -1,5 +1,6 @@
 package com.iamberry.rst.service.product;
 
+import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.product.Gift;
 import com.iamberry.rst.core.product.OrderGift;
@@ -97,6 +98,11 @@ public class ProductServiceImpl implements ProductService {
     }
 
     @Override
+    public List<Product> listProduce() {
+        return productMapper.listProduce();
+    }
+
+    @Override
     public List<ProductColor> listproductAndColor(ProductColor productColor) {
         return productMapper.listproductAndColor(productColor);
     }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java

@@ -1,6 +1,7 @@
 package com.iamberry.rst.service.product.mapper;
 
 import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.product.OrderGift;
 
 import java.util.List;
@@ -22,6 +23,12 @@ public interface ProductMapper {
     public List<OrderGift> listGift(OrderGift orderGift);
 
     /**
+     * 获取所有水机  奶机
+     * @return
+     */
+    List<Product> listProduce();
+
+    /**
      * 查询产品和产品颜色集合
      * @param productColor
      * @return

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

@@ -51,4 +51,9 @@
             </if>
         </where>
     </select>
+
+    <select id="listProduce"  resultType="product">
+        select * from tb_rst_product_info where product_type = 1
+    </select>
+
 </mapper>

+ 45 - 4
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -1,31 +1,56 @@
 package com.iamberry.rst.controllers.cm;
 
+import com.iamberry.rst.core.cm.CustomerInfo;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 
 /**
- * Created by wxm on 2017/8/29.
+ * Created by wxm
  */
 @Controller
 @RequestMapping("/admin/customer")
 public class AdminCustomerController {
 
-   // private
 
 
+    /**
+     * 获取客诉列表
+     *
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("customer:list:customer")
+    @RequestMapping("/_customer_list")
+    public ModelAndView getCustomer(HttpServletRequest request, CustomerInfo customer,
+                                  @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                  @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                  @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
+        ModelAndView mv = new ModelAndView("cm/customer/custome_list");
+//        PagedResult<Customer> pagedResult = ptsBomService.listCustomer(pageNO, pageSize, ptsBom, totalNum == 0);
+//        if (totalNum != 0) {
+//            pagedResult.setTotal(totalNum);
+//        }
+//        //获取产品集合,用于页面选择产品
+//        List<Produce> list = produceService.getProduceList();
+//        mv.addObject("produceList", list);
+//       StitchAttrUtil.setModelAndView(customer, mv, "/admin/bom/_bom_list", pagedResult);
+        return mv;
+    }
+
 
     /**
-     * 跳转到添加bom单页面
+     * 跳转到添加客诉页面
      *
      * @return
      */
     @RequiresPermissions("customer:add:customer")
     @RequestMapping(value = "/to_add_customer")
-    public ModelAndView toAddBom(HttpServletRequest request) {
+    public ModelAndView toAddCustomer(HttpServletRequest request) {
         ModelAndView mv = new ModelAndView("cm/customer/add_customer");
 
         //获取产品集合,用于页面选择产品
@@ -35,5 +60,21 @@ public class AdminCustomerController {
         return mv;
     }
 
+    /**
+     * 客诉搜索订单列表
+     *
+     * @return
+     */
+    @RequiresPermissions("customer:add:customer")
+    @RequestMapping(value = "/select_order")
+    public ModelAndView selectOrder(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/customer/order_list");
+
+
+        return mv;
+    }
+
+
+
 }
 

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

@@ -0,0 +1,126 @@
+package com.iamberry.rst.controllers.cm;
+
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+import com.iamberry.rst.core.cm.FittingsInfo;
+import com.iamberry.rst.core.order.Order;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.RentType;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
+import com.iamberry.rst.faces.cm.FittingsInfoService;
+import com.iamberry.rst.faces.product.ProductService;
+import com.iamberry.rst.utils.AdminUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * Created by wxm on 2017/8/29.
+ */
+@Controller
+@RequestMapping("/admin/detect")
+public class AdminDetectController {
+
+   // private
+    @Autowired
+    private ComplaintDetectInfoService complaintDetectInfoService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private FittingsInfoService fittingsInfoService;
+
+
+    /**
+     * 跳转到添加检测记录页面
+     *
+     * @return
+     */
+    @RequiresPermissions("detect:add:detect")
+    @RequestMapping(value = "/to_add_detect")
+    public ModelAndView toAddDetect(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/inspection/add_detect");
+        //获取所有产品
+        List<Product> productList = productService.listProduce();
+        mv.addObject("productList",productList);
+        //获取所有配件
+        List<FittingsInfo> listFittings = fittingsInfoService.listFittings();
+        mv.addObject("listFittings",listFittings);
+        return mv;
+    }
+
+
+
+    /**
+     * 客诉 - 查询品质检测列表
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("detect:select:detect")
+    @RequestMapping("/select_detect_list")
+    public ModelAndView selectDetectList(HttpServletRequest request,
+                                        @RequestParam(value = "pageNO", defaultValue = "1", required = false) int pageNO,
+                                        @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
+                                        @RequestParam(value = "pageSize", defaultValue = "5", required = false) int pageSize,
+                                         ComplaintDetectInfo detectInfo) {
+
+        ModelAndView mv = new ModelAndView("cm/inspection/detect_list");
+        StringBuilder url = new StringBuilder("/admin/detect/select_detect_list?pageSize=" + pageSize);
+
+        // 请求参数
+        if (StringUtils.isNotEmpty(detectInfo.getDetectPhenomenon())) {
+            url.append("&detectPhenomenon=").append(detectInfo.getDetectPhenomenon());
+            mv.addObject("detectPhenomenon",detectInfo.getDetectPhenomenon());
+        }
+        if (StringUtils.isNotEmpty(detectInfo.getDetectFailureCause())) {
+            url.append("&detectFailureCause=").append(detectInfo.getDetectFailureCause());
+            mv.addObject("detectFailureCause",detectInfo.getDetectFailureCause());
+        }
+        if (StringUtils.isNotEmpty(detectInfo.getDetectPoint())) {
+            url.append("&detectPoint=").append(detectInfo.getDetectPoint());
+            mv.addObject("detectPoint",detectInfo.getDetectPoint());
+        }
+        if (StringUtils.isNotEmpty(detectInfo.getDetectAnalysis())) {
+            url.append("&detectAnalysis=").append(detectInfo.getDetectAnalysis());
+            mv.addObject("detectAnalysis",detectInfo.getDetectAnalysis());
+        }
+        if (detectInfo.getDetectState() != null && detectInfo.getDetectState() != -1) {
+            url.append("&detectState=").append(detectInfo.getDetectState());
+            mv.addObject("detectState",detectInfo.getDetectState());
+        }
+        if (StringUtils.isNotEmpty(detectInfo.getDetectFailureClassification())) {
+            url.append("&detectFailureClassification=").append(detectInfo.getDetectFailureClassification());
+            mv.addObject("detectFailureClassification",detectInfo.getDetectFailureClassification());
+        }
+        if (detectInfo.getDetectProductType() != null && detectInfo.getDetectProductType() != -1) {
+            url.append("&detectProductType=").append(detectInfo.getDetectProductType());
+            mv.addObject("detectProductType",detectInfo.getDetectProductType());
+        }
+
+        // 封装请求数据
+        PageRequest<ComplaintDetectInfo> pageRequest = new PageRequest<>(detectInfo, pageNO, pageSize, pageTotal == null);
+        // 查询订单列表
+        PagedResult<ComplaintDetectInfo> result = complaintDetectInfoService.listComplaintDetect(pageRequest);
+        long total = 0;
+        if (pageTotal == null) {
+            total = result.getPages();
+        } else {
+            total = pageTotal;
+            result.setPages(total);
+        }
+
+        url.append("&pageTotal=").append(total).append("&pageNO=");
+        mv.addObject("page", result);
+        mv.addObject("url", url.toString());
+        return mv;
+    }
+
+}
+

+ 102 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/ComplaintQuestionInfoController.java

@@ -0,0 +1,102 @@
+package com.iamberry.rst.controllers.cm;
+
+import com.iamberry.rst.core.cm.ComplaintQuestionInfo;
+import com.iamberry.rst.core.cm.ComplaintSmallClassInfo;
+import com.iamberry.rst.core.cm.ComplaintTypeInfo;
+import com.iamberry.rst.faces.cm.ComplaintQuestionInfoService;
+import com.iamberry.rst.faces.cm.ComplaintSmallClassInfoService;
+import com.iamberry.rst.faces.cm.ComplaintTypeInfoService;
+import com.iamberry.wechat.tools.ResponseJson;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * Created by wxm
+ * 问题
+ */
+@Controller
+@RequestMapping("/admin/complaintQuestion")
+public class ComplaintQuestionInfoController {
+
+    @Autowired
+    private ComplaintTypeInfoService complaintTypeInfoService;
+
+    @Autowired
+    private ComplaintSmallClassInfoService complaintSmallClassInfoService;
+
+    @Autowired
+    private ComplaintQuestionInfoService complaintQuestionInfoService;
+
+    /**
+     * 查询所有问题类型
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/list_complaintType")
+    public ResponseJson listComplaintTypeInfo(HttpServletRequest request) {
+        ComplaintTypeInfo complaintTypeInfo = new ComplaintTypeInfo();
+        String complaintConsultingTypeOther =  request.getParameter("complaintConsultingType");
+
+        //咨询类型
+        if (complaintConsultingTypeOther != null && !"".equals(complaintConsultingTypeOther)) {
+            Integer complaintConsultingType = Integer.valueOf(complaintConsultingTypeOther);
+            complaintTypeInfo.setComplaintConsultingType(complaintConsultingType);
+        }
+
+        List<ComplaintTypeInfo> complaintTypeInfoList = complaintTypeInfoService.listComplaintTypeInfo(complaintTypeInfo);
+
+        if (complaintTypeInfoList == null || complaintTypeInfoList.size() < 1) {
+            return new ResponseJson(500, "查询失败", 500);
+        } else {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("complaintTypeInfoList", complaintTypeInfoList);
+            return rj;
+        }
+    }
+
+    /**
+     * 查询所有问题小类
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/list_complaintSmallClass")
+    public ResponseJson listComplaintSmallClassInfo(HttpServletRequest request,ComplaintSmallClassInfo complaintSmallClassInfo) {
+        List<ComplaintSmallClassInfo> complaintSmallClassInfoList = complaintSmallClassInfoService.listComplaintSmallClassInfo(complaintSmallClassInfo);
+        if (complaintSmallClassInfoList == null || complaintSmallClassInfoList.size() < 1) {
+            return new ResponseJson(500, "查询失败", 500);
+        } else {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("complaintSmallClassInfoList", complaintSmallClassInfoList);
+            return rj;
+        }
+    }
+
+    /**
+     * 查询所有问题
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/list_complaintQuestion")
+    public ResponseJson listComplaintQuestion(HttpServletRequest request,ComplaintQuestionInfo complaintQuestionInfo) {
+        List<ComplaintQuestionInfo> complaintQuestionInfoList = complaintQuestionInfoService.listComplaintQuestionInfo(complaintQuestionInfo);
+        if (complaintQuestionInfoList == null || complaintQuestionInfoList.size() < 1) {
+            return new ResponseJson(500, "查询失败", 500);
+        } else {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("complaintQuestionInfoList", complaintQuestionInfoList);
+            return rj;
+        }
+    }
+
+
+
+
+}

+ 1 - 1
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -108,7 +108,7 @@
 		<mapper resource="com/iamberry/rst/service/pts/mapper/ptsBatchMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/ptsSalesCompanyMapper.xml"/>
 
-		<mapper resource="com/iamberry/rst/service/cm/mapper/awaitingSignclosedProductInfoMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/cm/mapper/awaitingSignclosedProductMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/backGoodsMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/closedFittingMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/closedProdcueMapper.xml"/>

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

@@ -4,15 +4,47 @@
     <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"/>
+    <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" />
 <#include "/base/add_base.ftl">
     <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/icheck/icheck.css" rel="stylesheet" type="text/css"/>
     <style>
-        .add-list>li{margin: 10px 0;}
-        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
-        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        .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%);display: none;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{display: none;}
+        .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{display: none;}
+        .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%; }
     </style>
     <title>添加客诉 - 客诉管理 - RST</title>
 </head>
@@ -24,302 +56,558 @@
        style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;"
        href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
 </nav>
-<article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
-    <form action="${path}/admin/bom/save_bom" method="post" class="form form-horizontal" id="form-bom-add">
+<article class="page-container" style="padding: 10px;">
+    <div class="pd-20 cl">
+        <form action="" method="post" class="form form-horizontal" id="form-article-add">
+            <div class="row cl">
 
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3">修改基础:</label>
-            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
-				<select class="select" size="1" name="bomId">
+                <label class="form-label col-3">
+                    <div class="tit-2">客诉基本信息</div>
+                </label>
+                <div class="formControls col-9">
+                </div>
+            </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="" class="select">
+					<option value="0">薇薇</option>
+					<option value="1">薇薇</option>
+					<option value="11">薇薇</option>
+					<option value="12">薇薇</option>
+					<option value="13">薇薇</option>
 				</select>
 				</span>
+                </div>
             </div>
-        </div>
-
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom名称:</label>
-            <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="bomName" name="bomName" placeholder="请输入1-20位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,20}$/" errormsg="请输入1-20位的名称,支持中文、字母、数字!">
+            <div class="row cl">
+                <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="tel-1" name="sex" datatype="*" nullmsg="请选择来源入口!">
+                        <label for="tel-1">400电话</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="tel-2" name="sex">
+                        <label for="tel-2">微信公众号</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="tel-3" name="sex">
+                        <label for="tel-3">其他</label>
+                        <input type="text" style="width: 150px;margin-left: 10px;" class="input-text" value="" placeholder="" id="" name="">
+                    </div>
+                </div>
             </div>
-        </div>
-
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>硬件版本:</label>
-            <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="bomVersion" name="bomVersion" placeholder="请输入1-10位的版本号" datatype="*1-10" errormsg="请输入1-10位的版本号!">
+            <div class="row cl">
+                <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="tel-3" name="customerCounselType" datatype="*" nullmsg="请选择咨询类型!">
+                        <label for="tel-3">售前咨询</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="tel-4" name="tel">
+                        <label for="tel-4">售后咨询</label>
+                    </div>
+                </div>
             </div>
-        </div>
+            <div class="row cl" style="position: relative;">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>客诉问题:</label>
+                <div class="formControls col-2 col-sm-2"> <span class="select-box">
+				<select name="complaintId" class="select">
+					<#--<option value="0">使用操作</option>-->
+					<#--<option value="1">使用操作</option>-->
+				</select>
+				</span>
+                </div>
+                <div class="formControls col-2 col-sm-2"> <span class="select-box">
+				<select name="smallClassId" class="select">
+					<#--<option value="0">使用操作制水出水</option>
+					<option value="1">使用操作制水出水</option>-->
+				</select>
+				</span>
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <div class="clearfix">
+                        <input type="text" placeholder="搜索关键词" class="input-text  ac_input" name="questionId" value="" id="search_text" autocomplete="off" style="width:60%"><button type="button" class="btn btn-primary" id="search_button">搜索</button>
+                    </div>
+                </div>
 
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3">备注:</label>
-            <div class="formControls col-xs-8 col-sm-9">
-                <textarea name="bomRemarks" id="bomRemarks" cols="" rows="" class="textarea"
-                          placeholder="Bom单备注,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" ></textarea>
-                <p class="textarea-numberbar"><em class="textarea-length">0</em>/100</p>
+                <div class="dalog-ask">
+                    <div class="tag">
+                        <em></em>
+                        <strong>相关QA</strong>
+                        <ul id="question">
+                            <#--<li class="ask">1、净水机面板操作不灵敏,是怎么回事?</li>
+                            <li class="answer">答:<span>1净水机面板操作不灵敏,是怎么回事。1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?</span></li>
+                            <li class="ask">2、净水机面板操作不灵敏,是怎么回事?</li>
+                            <li class="answer">答:<span>2净水机面板操作不灵敏,是怎么回事。1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?</span></li>
+                            <li class="ask">3、净水机面板操作不灵敏,是怎么回事?</li>
+                            <li class="answer">答:<span>3净水机面板操作不灵敏,是怎么回事。1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?</span></li>
+                            <li class="ask">4、净水机面板操作不灵敏,是怎么回事?</li>
+                            <li class="answer">答:<span>4净水机面板操作不灵敏,是怎么回事。1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?1、净水机面板操作不灵敏,是怎么回事?</span></li>
+-->                        </ul>
+                    </div>
+                </div>
+
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>问题内容:</label>
+                <div class="formControls col-5 col-sm-5">
+                    <textarea name="" cols="" rows="2" class="textarea" placeholder="说点什么..." id="answer-textarea"></textarea>
+                </div>
             </div>
-        </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="" placeholder="请输入手机号" id="" name="">
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="button" class="btn btn-primary" value="发短信給用户">
+                </div>
+            </div>
+            <div class="row cl">
 
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom零件清单:</label>
-            <div class="formControls col-xs-8 col-sm-9 components">
-                <input type="hidden" id="bomComponentJson" name="bomComponentJson">
-                <table class="table table-border table-bordered table-bg table-hover table-sort">
-                    <thead>
-                        <tr class="text-c">
-                            <th width="150">选择零件</th>
-                            <th width="60">零件数量</th>
-                            <th width="20">操作</th>
+                <label class="form-label col-1 col-sm-1">
+                    <div class="tit">处理结果</div>
+                </label>
+                <div class="formControls col-10 col-sm-10">
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-10 col-sm-10 skin-minimal">
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">已解决</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">未解决</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">换新</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">维修</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">补发</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">退货</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">无理由退货</label>
+                    </div>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-10 col-sm-10">
+                    <ul class="time-line-list">
+                        <li><span class="arrow"></span><div class="number">1</div><div>录入客诉</div></li>
+                        <li><span class="arrow"></span><div class="number">2</div><div>督促用户寄回</div></li>
+                        <li><span class="arrow"></span><div class="number">3</div><div>录入快递单号</div></li>
+                        <li><span class="arrow"></span><div class="number">4</div><div>仓库收货</div></li>
+                        <li><span class="arrow"></span><div class="number">5</div><div>换新发货</div></li>
+                        <li><span class="arrow"></span><div class="number">6</div><div>发货通知用户</div></li>
+                        <li><span class="arrow"></span><div class="number">7</div><div>收货后回访</div></li>
+                    </ul>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>订单信息:</label>
+                <div class="formControls col-1 col-sm-1">
+                    <button type="button" class="btn btn-primary" id="selectOrder">搜索订单</button>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-7 col-sm-7 text-c">
+                    <table class="table table-border table-bg table-bordered">
+                        <tr>
+                            <th>销售</th><th>订单号</th><th>姓名</th><th>电话</th><th>订单金额</th><th>购买产品</th><th>购买日期</th>
                         </tr>
-                    </thead>
-                    <tbody id="componentaAll">
-
-                    </tbody>
-                </table>
-                <span id="componentsMsg" style="color: red"></span>
+                        <tr>
+                            <td>爱贝源-微信商城</td><td>1290387806</td><td>何小小</td><td>1882222888</td><td>¥3680</td><td>Watero净水机</td><td>2017-06-06</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <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">
+                    <input type="text" class="input-text" value="何秀刚" placeholder="填写收件人姓名" id="" name="">
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="13800138000" placeholder="填写收件人手机号" id="" name="">
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-4 col-sm-4">
+                    <div id="province"></div>
+                </div>
+                <div class="formControls col-1 col-sm-1">
+                    <button type="button" class="btn btn-primary">修改收货地址</button>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-5 col-sm-5">
+                    <textarea name="" cols="" rows="2" class="textarea" placeholder="请填写详细地址">莲花街道深南大道特区报业大厦12b</textarea>
+                </div>
             </div>
-        </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>换新产品:</label>
+                <div class="formControls col-10 col-sm-10">
+                    <div class="skin-minimal">
+                        <div class="check-box">
+                            <input type="checkbox" id="checkbox-1" checked>
+                            <label for="checkbox-1">净水机</label>
+                            <select name="" class="select" style="width: 100px;">
+                                <option value="0">WX-12</option>
+                                <option value="1">WX-13</option>
+                            </select>
 
 
-        <div class="row cl">
-            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
-                <input class="btn btn-primary radius" type="button" value="&nbsp;&nbsp;新增零件&nbsp;&nbsp;" onclick="addComponents('#','')">
+                            <select name="" class="select" style="width: 100px;">
+                                <option value="0">黑色</option>
+                                <option value="1">白色</option>
+                            </select>
+                            <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
+                        </div>
+
+
+                        <div class="check-box">
+                            <input type="checkbox" id="checkbox-2" checked>
+                            <label for="checkbox-2">水箱</label>
+                            <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
+                        </div>
+                        <div class="check-box">
+                            <input type="checkbox" id="checkbox-3" checked>
+                            <label for="checkbox-2">T1</label>
+                            <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
+                        </div>
+                        <div class="check-box">
+                            <input type="checkbox" id="checkbox-4" checked>
+                            <label for="checkbox-2">T2</label>
+                            <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
+                        </div>
+                    </div>
+                </div>
             </div>
-        </div>
 
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"></label>
-            <span class="c-red">*提示</span><span>:新增的Bom,需要批次选中该Bom单,才会生效!</span>
-        </div>
-        <div class="row cl">
-            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
-                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>TDS收集:</label>
+                <div class="formControls col-2 col-sm-2" style="position: relative;">
+                    <input type="hidden" name="arrcity_3word" id="arrcity_3word" value="" />
+                    <input style="width: 140px;" placeholder="" class="input-text my-search-input" type="text" name="arrcity" id="arrcity" />
+                    <div id="suggest" class="ac_results"></div>
+                </div>
+                <div class="formControls col-2 col-sm-2">
+				<span class="select-box">
+				<select name="" class="select">
+					<option value="0">罗湖区</option>
+					<option value="1">福田区</option>
+				</select>
+				</span>
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="" placeholder="进水tds数值" id="" name="">
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="" placeholder="出水tds数值" id="" name="">
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-6 col-sm-6">
+                    tds收集:广东省-深圳市-福田区   进水:100ppm   出水:100ppm
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>寄回信息:</label>
+                <div class="formControls col-5 col-sm-5">
+				<textarea name="" cols="" rows="2" class="textarea" placeholder="说点什么...">邮寄地址:东莞清溪三中金龙工业区徐福记对面优尼雅电子科技,杨春有,13592708169邮寄备注:您好,麻烦您那边把机器邮寄前请将水箱、接水台中的水倒掉并擦干,不要留有水渍,避免运输途中水或奶粉
+溅入机器内部造成不必要的损失;用原包装或泡沫等材质包裹好机身。避免运输途中造成机器     磕碰、损坏。
+请勿寄顺丰、圆通、EMS以及到付件快递,其他快递物流随意,寄回时,麻烦您在产品里面留下故障原因说明,
+提示:寄回后把单号给我们提供下然后提供下您的姓名、地址和电话方便我们修好后给您寄回去。</textarea>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="" placeholder="请输入手机号" id="" name="">
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="button" class="btn btn-primary" value="发短信給用户">
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-7 col-sm-7">
+                    <div class="update-parts">更换:<span>红色净水机(wx-1)x 1台</span><span>水箱 x 1件</span><span>t1 x 1件</span><span>t2 x 1件</span></div>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>处理描述:</label>
+                <div class="formControls col-5 col-sm-5">
+                    <textarea name="" cols="" rows="2" class="textarea" placeholder="说点什么..."></textarea>
+                </div>
+            </div>
+            <div class="row cl">
+                <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="a-7" name="bbb">
+                        <label for="a-7">需要回访</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">不需要回访</label>
+                    </div>
+                </div>
             </div>
-        </div>
-    </form>
+            <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">
+                    <input type="text" class="input-text" value="" placeholder="填写回访人姓名" id="" name="">
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="" placeholder="填写回访人手机号" id="" name="">
+                </div>
+            </div>
+            <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">
+                    <input type="text" placeholder="请选择回访日期" id="datemin" class="input-text Wdate" readonly="readonly">
+                </div>
+            </div>
+            <div class="row cl">
+                <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="a-7" name="bbb">
+                        <label for="a-7">09:00-12:00</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">12:00-14:00</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="a-7" name="bbb">
+                        <label for="a-7">14:00-18:00</label>
+                    </div>
+                </div>
+            </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="" class="select">
+					<option value="0">薇薇</option>
+					<option value="1">薇薇</option>
+					<option value="11">薇薇</option>
+					<option value="12">薇薇</option>
+					<option value="13">薇薇</option>
+				</select>
+				</span>
+                </div>
+            </div>
+            <div class="cl"  style="display: table;width: 100%;">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-4 col-sm-4">
+                    <span class="c-red">您将为自己指定一个回访任务</span>
+                </div>
+            </div>
+            <div class="row cl">
+                <div class="col-2 col-sm-2 col-offset-3">
+                    <button onClick="save_submit();" class="btn btn-block btn-primary size-XL" type="submit">确认录入</button>
+                </div>
+            </div>
+        </form>
+    </div>
 </article>
-<script type="text/javascript">
 
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript" src="${path}/common/lib/webuploader/0.1.5/webuploader.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/icheck/jquery.icheck.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/jquery.provincesCity.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/provincesData.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/airCity.js"></script>
+<#--<script type="text/javascript" src="${path}/common/lib/cm.lib/dimensions.js"></script>-->
+<script type="text/javascript" src="${path}/common/lib/cm.lib/suggest.js"></script>
+<script type="text/javascript">
     $(function(){
-        $("#form-bom-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: {//自定义验证类型
-                "select": function (gets, obj, curform, regxp) {
-                    if (gets == "") {
-                        return false;
-                    } else {
-                        return true;
-                    }
-                }
-            },
-            ignoreHidden: true,
-            tipSweep: true, //若为true,则只在表单提交时验证
-            ajaxPost: true, //异步提交
-            beforeCheck: function (curform) {  //验证通过之前执行的函数
-            },
-            beforeSubmit: function (curform) {  //验证通过之后执行的函数
-                var ptsBomComponentsList =  new Array();
-                $("#componentaAll").find("tr").each(function (){
-                    var ptsBomComponents = {};
-                    ptsBomComponents.componentsId = $(this).find("[name='comName']").eq(0).val();
-                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val();
-                    ptsBomComponentsList.push(ptsBomComponents);
-                })
-                $("#bomComponentJson").val(JSON.stringify(ptsBomComponentsList));
-            },
-            callback: function (data) {//异步回调函数
-                if (data) {
-                    var index = layer.alert(data.resultMsg, function () {
-                        if (data.resultCode == 200) {
-                            location.href = "${path}/admin/bom/_bom_list";
-                        } else {
-                            layer.close(index);
-                        }
-                    });
-                }
-            }
+        $('.skin-minimal input').iCheck({
+            checkboxClass: 'icheckbox-blue',
+            radioClass: 'iradio-blue',
+            increaseArea: '20%'
         });
-    })
+        $("#province").ProvinceCity();
+        $('.skin-minimal input').iCheck({
+            checkboxClass: 'icheckbox-blue',
+            radioClass: 'iradio-blue',
+            increaseArea: '20%'
+        });
+        $("#arrcity").suggest(citys,{hot_list:commoncitys,dataContainer:'#arrcity_3word',onSelect:function(result){
+            console.log($(this)[0].value);
+//		$("#city2").click()
+        },
+            attachObject:'#suggest'
+        });
+//$("#city2").suggest(citys,{hot_list:commoncitys,attachObject:"#suggest2"})
+    });
 
-    var allComponents;  //所有零件的集合
-    var staticProduceId;  //产品id,用于判断产品更改
-    
-//    $(function () {
-//        /*添加页面初始化,添加一个零件选择框*/
-//        addComponents("#","");
-//
-//        var produceId =   $("[name='produceId']").val();
-//        staticProduceId = produceId;
-//        getBomByProduce(produceId);
-//
-//        /*监听产品选择*/
-//        $("[name='produceId']").change(function(){
-//            var produceId = $(this).val();
-//            getBomByProduce(produceId);
-//
-//            delComponent(0,"all");
-//            addComponents("#","");
-//        })
-//
-//        /*监听修改基础  bom单*/
-//        $("[name='bomId']").change(function(){
-//            var bomId = $(this).val();
-//            getBom(bomId);
-//        })
-//    })
-    
-    /* 添加零件 */
-    function addComponents(componentsId,number) {
-        var tbody = $("#componentaAll");
+    $(document).on('click', '.dalog-ask .answer', function() {
+        $("#answer-textarea").text($(this).find("span").text());
+    });
 
-        var produceId = $("[name='produceId']").val();
-        if(allComponents == null || produceId != staticProduceId){ //获取零件列表
-            staticProduceId = produceId;
-            allComponents = listComponent(produceId);
-        }
-        var opHtml = '';
-        for(var i=0;i<allComponents.length;i++){
-            var components = allComponents[i];
-            var isSelect = '';
-            if(componentsId == components.componentsId){
-                isSelect = 'selected="selected"';
-            }
-            opHtml += '<option value="'+ components.componentsId +'" '+ isSelect +'>'+ components.componentsName +'('+ components.componentsNo + ')</option>';
-        }
-        var html = '<tr class="text-c"> '
-                +'<td> '
-                +'<select class="select" size="1" name="comName" style="height: 30px;" datatype="*" errormsg="请选择零件"> '
-                +''
-                + opHtml
-                +'</select> '
-                +'</td> '
-                +'<td> '
-                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量只能为数字且不能超过999件!"> '
-                +'</td> '
-                +'<td> '
-                +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
-                +'<i class="Hui-iconfont">&#xe609;</i> '
-                +'</a> '
-                +'</td> '
-                +'</tr>';
-        tbody.append(html);
-    }
+</script>
+<script type="text/javascript">
 
-    /*删除零件  type=all时删除所有的零件 */
-    function delComponent(node,type) {
-        if(type == "all"){
-            $("#componentaAll").find("tr").each(function () {
-                $(this).remove();
-            })
-        }else{
-            //删除零件必须保证还有一个零件
-            var componentLength = $("#componentaAll").find("tr").length;
-            if(componentLength > 1){
-                $(node).parent().parent().remove();
-            }else{
-                layer.msg('必须要有一个零件', {icon: 5, time: 3000});
-            }
-        }
-    }
 
-    /*获取所有的零件*/
-    function  listComponent(produceId) {
-        var list = new Array();
+
+    /*初始化页面参数*/
+    $(function () {
+
+        /*初始化问题分类*/
+        initComplaintTypeInfo();
+
+        /*监听问题类型 选择事件*/
+        $("[name='complaintId']").change(function(){
+            initComplaintSmallClassInfo($(this).val());
+        })
+
+        /*监听问题关键字搜索*/
+        $(document).on('click', '#search_button', function() {
+            initComplaintQuestionInfo();
+        });
+
+        /*搜索订单事件*/
+        $(document).on('click', '#selectOrder', function() {
+            selectOrder();
+        });
+    })
+
+    /*初始化问题大类*/
+    function initComplaintTypeInfo() {
+        //默认为售前咨询
+        var customerCounselTypeOverall = 1;
+        var html = "";
         $.ajax({
             type: "POST",
             data: {
-                produceId : produceId
+                complaintConsultingType : customerCounselTypeOverall
             },
-            url: "${path}/admin/bom/get_listComponents",
+            url: "${path}/admin/complaintQuestion/list_complaintType",
             async: false,
             success: function(data){
+                var id;
                 if (data.returnCode == 200) {
-                    $("#componentsMsg").html("");
-                    list = data.returnMsg.ptsComponentsList;
-                }
-                if(data.returnCode != 200 || list.length < 1){  //提示需要添加零件
-                    $("#componentsMsg").html("该产品没有对应的零件,请到零件管理添加零件");
+                    for(var i=0;i<data.returnMsg.complaintTypeInfoList.length;i++){
+                        var complaintTypeInfo = data.returnMsg.complaintTypeInfoList[i];
+                        if(i == 0 ){
+                            id = complaintTypeInfo.complaintId;
+                        }
+                        html += '<option value="'+ complaintTypeInfo.complaintId +'">'+ complaintTypeInfo.complaintClassName +'</option>';
+                    }
+                }else{
+                    html = '';
                 }
+                $("[name='complaintId']").html(html);
+                initComplaintSmallClassInfo(id)
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
-        return list;
     }
 
-    /*根据产品id,获取bom集合*/
-    function getBomByProduce(produceId){
+
+    /*显示小类*/
+    function initComplaintSmallClassInfo(complaintId){
+        var html = "";
         $.ajax({
             type: "POST",
             data: {
-                produceId : produceId
+                complaintId : complaintId
             },
-            url: "${path}/admin/bom/get_listBom",
+            url: "${path}/admin/complaintQuestion/list_complaintSmallClass",
             async: false,
             success: function(data){
-                var html = '<option value="">不选择</option>';
                 if (data.returnCode == 200) {
-                    var bomList = data.returnMsg.ptsBomsList;
-                    for(var i=0;i<bomList.length;i++){
-                        html += '<option value="'+ bomList[i].bomId +'">'+ bomList[i].bomName +'</option>';
+                    for(var i=0;i<data.returnMsg.complaintSmallClassInfoList.length;i++){
+                        var ComplaintSmallClassInfo = data.returnMsg.complaintSmallClassInfoList[i];
+                        html += '<option value="'+ ComplaintSmallClassInfo.smallClassId +'">'+ ComplaintSmallClassInfo.smallClassName +'</option>';
                     }
+                }else{
+                    html = '';
                 }
-                if(data.returnCode != 200 || data.returnMsg.ptsBomsList <1){
-                    defaultAllInput();
-                }
-                $("[name='bomId']").html(html);
+                $("[name='smallClassId']").html(html);
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
     }
 
-    /*获取bom信息,赋值在页面上*/
-    function getBom(bomId){
-        var bom = new Object();
+
+    /**
+     * 搜索QA 显示
+     */
+    function initComplaintQuestionInfo(){
+        var complaintId = $("[name='complaintId']").val();
+        var smallClassId = $("[name='smallClassId']").val();;
+        var questionName = $("[name='questionId']").val();;;
+        var html = "";
         $.ajax({
             type: "POST",
             data: {
-                bomId : bomId
+                complaintId : complaintId,
+                smallClassId : smallClassId,
+                questionName : questionName
             },
-            url: "${path}/admin/bom/get_bom",
+            url: "${path}/admin/complaintQuestion/list_complaintQuestion",
             async: false,
             success: function(data){
                 if (data.returnCode == 200) {
-                    bom = data.returnMsg.ptsBom;
+                    for(var i=0;i<data.returnMsg.complaintQuestionInfoList.length;i++){
+                        var complaintQuestion= data.returnMsg.complaintQuestionInfoList[i];
+                        html += '<li class="ask">'+ complaintQuestion.questionName +'</li>' +
+                                '<li class="answer" style="height: 65px;overflow: hidden;">答:<span>'+ complaintQuestion.questionProfile +'</span></li>';
+                    }
+                }else{
+                    html = '';
                 }
+                $("#question").html(html);
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
+        $(".dalog-ask").show();
+    }
+
+    /**
+     * 发送短信
+     * @param phone  手机号码
+     * @param desc   发送内容
+     * @param node   返回结果显示节点
+     */
+    function sendPhone(phone,desc,node){
 
-        if(bom != null && bom.bomId != null){
-            $("#bomName").val(bom.bomName);
-            $("#bomRemarks").val(bom.bomRemarks);
-            $("#bomVersion").val(bom.bomVersion);
-            delComponent(0,"all");
-            var components = bom.ptsBomComponentsList;
-            if(components != null && components.length > 0){
-                for(var i=0;i<components.length;i++){
-                    addComponents(components[i].componentsId,components[i].bomComponentsQuantity);
-                }
-            }
-        }else{
-            defaultAllInput();
-        }
     }
 
-    /*当选择产品或者bom不选择时,都需要重置所有的输入框和表格*/
-    function defaultAllInput() {
-        $("#bomName").val("");
-        $("#bomRemarks").val("");
-        delComponent(0,"all");
-        addComponents("#","");
+    /*搜索订单框*/
+    function selectOrder(){
+        layer_show("搜索订单","${path}/admin/customer/select_order","800","350");
     }
+
+
 </script>
 <!--/请在上方写此页面业务相关的脚本-->
 </body>

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

@@ -0,0 +1,125 @@
+<!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/list_base.ftl">
+    <title>客诉列表</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> 客诉管理
+    <span class="c-gray en">&gt;</span> 客诉列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form action="${path}/admin/customer/_customer_list" method="post">
+            <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddCustomer();">增加Customer</button>
+            <#--<select class="my-select" name="produceId" style="height: 36px;width: 150px">
+                <option value ="">所有产品</option>
+                <#if produceList?? &&  (produceList?size > 0) >
+                    <#list produceList as produce>
+                        <option value ="${produce.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
+                    </#list>
+                </#if>
+            </select>-->
+           <#-- <input type="text" class="my-input"  style="width:150px" value="${customerId!}" placeholder="Customer单编号" id="customerId" name="customerId">-->
+            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" 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">
+            &lt;#&ndash;<th width="50">Customer编号</th>&ndash;&gt;
+            <th width="60">所属产品</th>
+            <th width="100">customer名称</th>
+            <th width="80">硬件版本</th>
+            <th width="80">零件总数量</th>
+            <th width="80">零件总成本(元)</th>
+            <th width="80">零件总重(g)</th>
+            <th width="100">备注</th>
+            <th width="80">最近修改时间</th>
+            <th width="80">添加时间</th>
+            <th width="80">操作</th>
+        </tr>
+        </thead>
+        <tbody>
+            <#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>
+                            <td>
+                                <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_customer(${customer.customerId!''})">
+                                    <i class="Hui-iconfont">&#xe6df;</i>
+                                </a>&nbsp;
+                                <a style="text-decoration:none" href="javascript:void(0);" title="查看customer单详情" onclick="admin_details_customer(${customer.customerId!''})">
+                                    <i class="Hui-iconfont">&#xe665;</i>
+                                </a>
+                            </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>
+<script>
+    /**
+     * 跳转到添加customer页面
+     */
+    function toAddCustomer(){
+        window.location.href= "${path}/admin/customer/to_add_customer";
+    }
+
+    /**
+     *跳转到编辑页面
+     * @param employee
+     */
+    function admin_update_customer(customerId) {
+        window.location.href= "${path}/admin/customer/to_update_customer?customerId="+customerId;
+    }
+
+    /**
+     *跳转到详情页面
+     * @param employee
+     */
+    function admin_details_customer(customerId) {
+        window.location.href= "${path}/admin/customer/to_details_customer?customerId="+customerId;
+    }
+
+</script>
+</body>
+</html>

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

@@ -0,0 +1,140 @@
+<!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/list_base.ftl">
+    <title>客诉列表</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> 客诉管理
+    <span class="c-gray en">&gt;</span> 客诉列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form action="${path}/admin/customer/_customer_list" method="post">
+            <div class="row cl">
+                <div class="formControls col-4 col-sm-4" style="width: 150px;"> <span class="select-box">
+                    <select name="" class="select">
+                        <option value="0">薇薇</option>
+                        <option value="1">薇薇</option>
+                        <option value="11">薇薇</option>
+                        <option value="12">薇薇</option>
+                        <option value="13">薇薇</option>
+                    </select>
+                    </span>
+                </div>
+                <div class="formControls col-4 col-sm-4" style="width: 150px;"> <span class="select-box">
+                    <select name="" class="select">
+                        <option value="0">薇薇</option>
+                        <option value="1">薇薇</option>
+                        <option value="11">薇薇</option>
+                        <option value="12">薇薇</option>
+                        <option value="13">薇薇</option>
+                    </select>
+                    </span>
+                </div>
+                <div class="formControls col-2 col-sm-2">
+                    <input type="text" class="input-text" value="" placeholder="请输入手机号" id="" name="">
+                </div>
+                <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            </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">
+            &lt;#&ndash;<th width="50">Customer编号</th>&ndash;&gt;
+            <th width="60">所属产品</th>
+            <th width="100">customer名称</th>
+            <th width="80">硬件版本</th>
+            <th width="80">零件总数量</th>
+            <th width="80">零件总成本(元)</th>
+            <th width="80">零件总重(g)</th>
+            <th width="100">备注</th>
+            <th width="80">最近修改时间</th>
+            <th width="80">添加时间</th>
+            <th width="80">操作</th>
+        </tr>
+        </thead>
+        <tbody>
+            <#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>
+                            <td>
+                                <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_customer(${customer.customerId!''})">
+                                    <i class="Hui-iconfont">&#xe6df;</i>
+                                </a>&nbsp;
+                                <a style="text-decoration:none" href="javascript:void(0);" title="查看customer单详情" onclick="admin_details_customer(${customer.customerId!''})">
+                                    <i class="Hui-iconfont">&#xe665;</i>
+                                </a>
+                            </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>
+<script>
+    /**
+     * 跳转到添加customer页面
+     */
+    function toAddCustomer(){
+        window.location.href= "${path}/admin/customer/to_add_customer";
+    }
+
+    /**
+     *跳转到编辑页面
+     * @param employee
+     */
+    function admin_update_customer(customerId) {
+        window.location.href= "${path}/admin/customer/to_update_customer?customerId="+customerId;
+    }
+
+    /**
+     *跳转到详情页面
+     * @param employee
+     */
+    function admin_details_customer(customerId) {
+        window.location.href= "${path}/admin/customer/to_details_customer?customerId="+customerId;
+    }
+
+</script>
+</body>
+</html>

+ 169 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/add_detect.ftl

@@ -0,0 +1,169 @@
+<!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" />
+<#include "/base/add_base.ftl">
+    <title>添加检测记录 - H-ui.filter v2.4</title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 8px 5px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-input-date{padding: 8px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(http://s.iamberry.com/images/rili-1.png) 98.5% center no-repeat; background-size:auto 50%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-btn-reset{padding: 10px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 10px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;width: 60%; height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(http://s.iamberry.com/images/select-1.png) right center no-repeat #fff;background-size:auto 100%;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+    <meta name="keywords" content="${path}">
+    <meta name="description" content="H-ui.admin v3.0,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
+</head>
+<body>
+<article class="page-container">
+    <form class="form form-horizontal" id="form-admin-add">
+
+
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">检测产品&nbsp;&nbsp;</span>
+            <label for="radio-1">
+                <input type="radio" id="radio-1" name="detectProductType" value="1" checked/>产品
+                <select name="orderPayType" style="width:100px">
+
+                <#if (productList ?size > 0)>
+                    <#list productList as list>
+                        <option value ="${list.productId}">${list.productName}</option>
+                    </#list>
+                <#else >
+                    <option value ="">暂无产品,请先添加产品</option>
+                </#if>
+                </select>
+                <input class="my-input" type="text" id="machineNo" name="machineNo" style="width: 30%;" placeholder="机器编号" />
+            </label>
+        </div>
+
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">&nbsp;</span>
+
+            <label for="radio-2" style="margin-left: 50px;">
+                <input type="radio" id="radio-2" name="detectProductType" value="2"/>配件
+                <select name="orderPayType"  style="width:100px">
+                <#if (listFittings ?size > 0)>
+                    <#list listFittings as list>
+                        <option value ="${list.fittingsId}">${list.fittingsName}</option>
+                    </#list>
+                <#else >
+                    <option value ="">暂无配件,请先添加配件</option>
+                </#if>
+                </select>
+            </label>
+        </div>
+
+        <div class="input-box"><span class="input-dic spanhidth">检测日期</span><input class="my-input-date" type="text" style="width: 76%;"  name="signclosedUpdateTime" id="signclosedUpdateTime" onClick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})" placeholder="请选择检测日期" readonly="readonly"/> </div>
+
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">检测结果</span>
+            <label for="radio-3">
+                <input type="radio" id="radio-3" name="detectState" value="3" checked/>检测通过
+            </label>
+            <label for="radio-4" style="margin-left: 50px;">
+                <input type="radio" id="radio-4" name="detectState" value="4"/>检测未通过
+            </label>
+        </div>
+
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectPhenomenon" id="detectPhenomenon" class="my-textarea" placeholder="工厂检测现象"></textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectFailureClassification" id="detectFailureClassification" class="my-textarea" placeholder="故障分类"></textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectFailureCause" id="detectFailureCause" class="my-textarea" placeholder="故障原因"></textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectResults" id="detectResults" class="my-textarea" placeholder="判定结果"></textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectPoint" id="detectPoint" class="my-textarea" placeholder="故障指向"></textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectAnalysis" id="detectAnalysis" class="my-textarea" placeholder="原因分析"></textarea>
+        </div>
+
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">是否维修</span>
+            <label for="radio-5">
+                <input type="radio" id="radio-5" name="detectIsMaintenance" value="1" checked/>需要维修
+            </label>
+            <label for="radio-6" style="margin-left: 50px;">
+                <input type="radio" id="radio-6" name="detectIsMaintenance" value="2"/>不需要维修
+            </label>
+        </div>
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">是否已转入</span>
+            <label for="radio-7">
+                <input type="radio" id="radio-7" name="detectRevolutionProduced" value="1" checked/>已转入维修
+            </label>
+            <label for="radio-8" style="margin-left: 50px;">
+                <input type="radio" id="radio-8" name="detectRevolutionProduced" value="2"/>未转入维修
+            </label>
+        </div>
+
+        <div class="input-box">
+            <span class="input-dic spanhidth">备注</span>
+            <textarea rows="3" cols="20" name="detectDesc" id="detectDesc" class="my-textarea" placeholder="请详细备注签收的内容,便于以后复查。如果转入生产,则生产部门同事可查看!"></textarea>
+        </div>
+        <div>
+           <button type="button" class="my-btn-submit" onclick="">确认提交</button>
+        </div>
+    </form>
+</article>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+    $(function(){
+
+
+    });
+
+    function  add() {
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/admin/order/save_order_money",
+            data:$('#form-admin-add').serialize(),// 你的formid
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    window.parent.admin_result("支付成功!",1);
+                } else {
+                    window.parent.admin_result(data.resultMsg,5);
+                }
+                var index = parent.layer.getFrameIndex(window.name);
+                parent.$('.btn-refresh').click();
+                parent.layer.close(index);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                window.parent.admin_result("支付失败!",5);
+                var index = parent.layer.getFrameIndex(window.name);
+                parent.$('.btn-refresh').click();
+                parent.layer.close(index);
+            }
+        });
+    }
+</script>
+</body>
+</html>

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

@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title></title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+<#include "/base/list_base.ftl">
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> RST管理
+    <span class="c-gray en">&gt;</span> 品质检测列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form name="form1" action="${path}/admin/detect/select_detect_list" method="post">
+            <button type="button" style="cursor:pointer;float: left;" class="my-btn-search" onclick="add_detect('添加品质检测','${path}/admin/detect/to_add_detect','570','450');">新建品检</button>
+            <input class="my-input" type="text" name="questionTitle" value="${questionTitle!}" placeholder="客诉问题"/>
+            <input class="my-input" type="text" name="detectPhenomenon" value="${detectPhenomenon!}" placeholder="工厂检测现象"/>
+            <input class="my-input" type="text" name="detectFailureCause" value="${detectFailureCause!}" placeholder="故障原因"/>
+            <input class="my-input" type="text" name="detectPoint" value="${detectPoint!}" placeholder="故障指向"/>
+            <input class="my-input" type="text" name="detectAnalysis" value="${detectAnalysis!}" placeholder="原因分析"/>
+            <input class="my-input" type="text" name="detectFailureClassification" value="${detectFailureClassification!}" placeholder="故障分类"/>
+
+            <select class="my-select" name="detectState" style="height: 30px;width: 150px">
+                <option value ="">选择状态</option>
+                <option value ="1" <#if detectState??><#if detectState == 1>selected="selected"</#if></#if>>待仓库转入</option>
+                <option value ="2" <#if detectState??><#if detectState == 2>selected="selected"</#if></#if>>正在检查</option>
+                <option value ="3" <#if detectState??><#if detectState == 3>selected="selected"</#if></#if>>检查通过</option>
+                <option value ="4" <#if detectState??><#if detectState == 4>selected="selected"</#if></#if>>检查未通过</option>
+            </select>
+            <select class="my-select" name="detectProductType" style="height: 30px;width: 150px">
+                <option value ="">选择产品类型</option>
+                <option value ="1" <#if detectProductType??><#if detectProductType == 1>selected="selected"</#if></#if>>净水机</option>
+                <option value ="2" <#if detectProductType??><#if detectProductType == 2>selected="selected"</#if></#if>>冲奶机</option>
+            </select>
+            <button style="cursor:pointer;" type="submit" class="my-btn-search">搜索</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="100">产品类型</th>
+                <th width="100">产品型号</th>
+                <th width="100">状态</th>
+                <th width="100">工厂检测现象</th>
+                <th width="100">故障分类</th>
+                <th width="150">故障原因</th>
+                <th width="150">判定结果</th>
+                <th width="150">故障指向</th>
+                <th width="150">原因分析</th>
+                <th width="150">客诉描述</th>
+                <th width="150">是否转入生产部门</th>
+                <th width="150">备注</th>
+                <th width="150">检测日期</th>
+                <th width="50">操作</th>
+            </tr>
+            </thead>
+            <tbody id="listid">
+            <#if (page.dataList?size > 0)>
+                <#list page.dataList as detect>
+                <tr>
+                    <td class="text-c" width="100">${detect.detectProductType!}</td>
+                    <td class="text-c" width="100">${detect.detectProductNumber!}</td>
+                    <td class="text-c" width="100">
+                        <#if detect.detectState == 1>
+                            待仓库转入
+                        </#if>
+                        <#if detect.detectState == 2>
+                            正在检查
+                        </#if>
+                        <#if detect.detectState == 3>
+                            检查通过
+                        </#if>
+                        <#if detect.detectState == 4>
+                            检查通过
+                        </#if>
+                    </td>
+                    <td class="text-c" width="100">${detect.detectPhenomenon!}</td>
+                    <td class="text-c" width="100">${detect.detectFailureClassification!}</td>
+                    <td class="text-c" width="100">${detect.detectFailureCause!}</td>
+                    <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">
+                        <#if detect.detectRevolutionProduced == 1>
+                            待转入
+                        </#if>
+                        <#if detect.detectRevolutionProduced == 2>
+                            已转入
+                        </#if>
+                        <#if detect.detectRevolutionProduced == 3>
+                            不需要转入
+                        </#if>
+                    </td>
+                    <td class="text-c" width="100">${detect.detectDesc!}</td>
+                    <td class="text-c" width="100">${(detect.signclosedCreateTime?string("yyyy-MM-dd"))!''}</td>
+                    <!-- 遍历操作 -->
+                    <td class="td-manage text-c">
+                        <#--<a style="text-decoration:none" href="javascript:;" title="修改"
+                           onclick="edit_detail('${path}/admin/equipment/_update_device?deviceId=${device.deviceId!}');">
+                            <i class="Hui-iconfont">&#xe6df;</i>
+                        </a>-->
+                    </td>
+                </tr>
+                </#list>
+            <#else >
+            <tr><td class="td-manage text-c" colspan = "14">暂时没有品质检测信息</td></tr>
+            </#if>
+            </tbody>
+        </table>
+    </div>
+</div>
+<div style="padding-top: 10px;"></div>
+<#include "/base/page_util.ftl">
+
+<script type="text/javascript">
+    /*添加*/
+    function add_detect(title,url,w,h){
+        layer_show(title,url,w,h);
+    }
+</script>
+</body>
+</html>

BIN
watero-rst-web/src/main/webapp/common/images/cm/search.png


BIN
watero-rst-web/src/main/webapp/common/images/cm/select-1.png


+ 177 - 0
watero-rst-web/src/main/webapp/common/lib/cm.lib/airCity.js

@@ -0,0 +1,177 @@
+/*初始化常用机场城市*/
+var commoncitys=new Array();
+commoncitys[0]=new Array('SZX','深圳','SHENZHEN','SZ'); 
+commoncitys[1]=new Array('PEK','北京','BEIJING','BJ'); 
+commoncitys[2]=new Array('SHA','上海','SHANGHAI','SH'); 
+commoncitys[3]=new Array('CAN','广州','GUANGZHOU','GZ'); 
+commoncitys[4]=new Array('CTU','成都','CHENGDU','CD'); 
+commoncitys[5]=new Array('HGH','杭州','HANGZHOU','HZ'); 
+commoncitys[6]=new Array('CSX','长沙','CHANGSHA','CS'); 
+commoncitys[7]=new Array('CKG','重庆','CHONGQING','CQ'); 
+commoncitys[8]=new Array('KMG','昆明','KUNMING','KM'); 
+commoncitys[9]=new Array('XIY','西安','XIAN','XA'); 
+commoncitys[10]=new Array('WUH','武汉','WUHAN','WH'); 
+commoncitys[11]=new Array('NKG','南京','NANJING','NJ'); 
+commoncitys[12]=new Array('TAO','青岛','QINGDAO','QD'); 
+commoncitys[13]=new Array('SYX','三亚','SANYA','SY'); 
+commoncitys[14]=new Array('XMN','厦门','XIAMEN','XM'); 
+
+/*初始化所有国内机场城市*/
+var citys=new Array();
+citys[0]=new Array('SHA','上海','SHANGHAI','SH'); 
+citys[1]=new Array('HYN','黄岩','HUANGYAN','HY'); 
+citys[2]=new Array('HGH','杭州','HANGZHOU','HZ'); 
+citys[3]=new Array('YIW','义乌','YIWU','YW'); 
+citys[4]=new Array('JUZ','衢州','JUZHOU','QZ'); 
+citys[5]=new Array('HSN','舟山(普陀山)','ZHOUSHAN','ZS'); 
+citys[6]=new Array('WNZ','温州','WENZHOU','WZ'); 
+citys[7]=new Array('NGB','宁波','NINGBO','NB'); 
+citys[8]=new Array('LNJ','临沧','LINCANG','LC'); 
+citys[9]=new Array('ZAT','昭通','ZHAOTONG','ZT'); 
+citys[10]=new Array('SYM','思茅','SIMAO','SM'); 
+citys[11]=new Array('LUM','芒市','MANSHI','MS'); 
+citys[12]=new Array('BSD','保山','BAOSHAN','BS'); 
+citys[13]=new Array('KMG','昆明','KUNMING','KM'); 
+citys[14]=new Array('JHG','西双版纳','XISHUANGBANNA','XSBN'); 
+citys[15]=new Array('DLU','大理','DALI','DL'); 
+citys[16]=new Array('DIG','迪庆','DIQING','DQ'); 
+citys[17]=new Array('LJG','丽江','LIJIANG','LJ'); 
+citys[18]=new Array('LXA','拉萨','LASA','LS'); 
+citys[19]=new Array('TCG','塔城','TACHENG','TC'); 
+citys[20]=new Array('IQM','且末','QIEMO','QM'); 
+citys[21]=new Array('KCA','库车','KUCHE','KC'); 
+citys[22]=new Array('HTN','和田','HETAN','HT'); 
+citys[23]=new Array('HMI','哈密','HAMI','HM'); 
+citys[24]=new Array('FYN','富蕴','FUYUN','FY'); 
+citys[25]=new Array('AKU','阿克苏','AGESU','AKS'); 
+citys[26]=new Array('URC','乌鲁木齐','WULUMUQI','WLMQ'); 
+citys[27]=new Array('KHG','喀什','KASHI','KS'); 
+citys[28]=new Array('KRL','库尔勒','KUERLE','KEL'); 
+citys[29]=new Array('KRY','克拉玛依','KELAMAYI','KLMY'); 
+citys[30]=new Array('AAT','阿勒泰','ALETAI','ALT'); 
+citys[31]=new Array('YIN','伊宁','YINING','YN'); 
+citys[32]=new Array('TSN','天津','TIANJIN','TJ'); 
+citys[33]=new Array('AKA','安康','ANKANG','AK'); 
+citys[34]=new Array('ENY','延安','YANAN','YA'); 
+citys[35]=new Array('HZG','汉中','HANZHONG','HZ'); 
+citys[36]=new Array('XIY','西安','XIAN','XA'); 
+citys[37]=new Array('UYN','榆林','YULIN','YL'); 
+citys[38]=new Array('CIH','长治','CHANGZHI','CZ'); 
+citys[39]=new Array('TYN','太原','TAIYUAN','TY'); 
+citys[40]=new Array('DAT','大同','DATONG','DT'); 
+citys[41]=new Array('YCU','运城','YUNCHENG','YC'); 
+citys[42]=new Array('TNA','济南','JINAN','JN'); 
+citys[43]=new Array('YNT','烟台','YANTAI','YT'); 
+citys[44]=new Array('JNG','济宁','JINING','JL'); 
+citys[45]=new Array('DOY','东营','DONGYING','DY'); 
+citys[46]=new Array('LYI','临沂','LINYI','LY'); 
+citys[47]=new Array('WEF','潍坊','WEIFANG','WF'); 
+citys[48]=new Array('TAO','青岛','QINGDAO','QD'); 
+citys[49]=new Array('WEH','威海','WEIHAI','WH'); 
+citys[50]=new Array('GHN','广汉','GUANGHAN','GH'); 
+citys[51]=new Array('DAX','达县','DAXIAN','DX'); 
+citys[52]=new Array('CTU','成都','CHENGDU','CD'); 
+citys[53]=new Array('MIG','绵阳','MIANYANG','MY'); 
+citys[54]=new Array('YBP','宜宾','YIBIN','YB'); 
+citys[55]=new Array('LZO','泸州','LUZHOU','LZ'); 
+citys[56]=new Array('XIC','西昌','XICHANG','XC'); 
+citys[57]=new Array('NAO','南充','NANCHONG','NC'); 
+citys[58]=new Array('PZI','攀枝花','PANZHIHUA','PZH'); 
+citys[59]=new Array('GOQ','格尔木','GELANMU','GEM'); 
+citys[60]=new Array('XNN','西宁','XINING','XN'); 
+citys[61]=new Array('ZHY','中卫','ZHONGWEI','null'); 
+citys[62]=new Array('INC','银川','YINCHUAN','YC'); 
+citys[63]=new Array('XIL','锡林浩特','XILINHAOTE','XLHT'); 
+citys[64]=new Array('HLH','乌兰浩特','WULANHAOTE','WLHT'); 
+citys[65]=new Array('WUA','乌海','WUHAI','WH'); 
+citys[66]=new Array('TGO','通辽','TONGLIAO','TL'); 
+citys[67]=new Array('HET','呼和浩特','HUHEHAOTE','HHHT'); 
+citys[68]=new Array('DSN','鄂尔多斯','EERDUOSI','EEDS'); 
+citys[69]=new Array('NZH','满洲里','MANZHOULI','MZL'); 
+citys[70]=new Array('HLD','海拉尔','HAILAER','HLE'); 
+citys[71]=new Array('CIF','赤峰','CHIFENG','CF'); 
+citys[72]=new Array('BAV','包头','BAOTOU','BT'); 
+citys[73]=new Array('CHG','朝阳','CHAOYANG','CY'); 
+citys[74]=new Array('SHE','沈阳','SHENYANG','SY'); 
+citys[75]=new Array('DLC','大连','DALIAN','DL'); 
+citys[76]=new Array('DDG','丹东','DANDONG','DD'); 
+citys[77]=new Array('JNZ','锦州','JINZHOU','JZ'); 
+citys[78]=new Array('AOG','鞍山','ANSHAN','AS'); 
+citys[79]=new Array('KHN','南昌','NANCHANG','NC'); 
+citys[80]=new Array('JDZ','景德镇','JINDEZHEN','JDZ'); 
+citys[81]=new Array('JIU','九江','JIUJIANG','JJ'); 
+citys[82]=new Array('KOW','赣州','GANZHOU','GZ'); 
+citys[83]=new Array('JGS','井冈山','JINGGANGSHAN','JGS'); 
+citys[84]=new Array('KNC','吉安','JIAN','JA'); 
+citys[85]=new Array('LYG','连云港','LIANYUNGANG','LYG'); 
+citys[86]=new Array('SZV','苏州','SUZHOU','SZ'); 
+citys[87]=new Array('YNZ','盐城','YANCHENG','YC'); 
+citys[88]=new Array('XUZ','徐州','XUZHOU','XZ'); 
+citys[89]=new Array('NKG','南京','NANJING','NJ'); 
+citys[90]=new Array('NTG','南通','NANTONG','NT'); 
+citys[91]=new Array('CZX','常州','CHANGZHOU','CZ'); 
+citys[92]=new Array('WUX','无锡','WUXI','WX'); 
+citys[93]=new Array('TNH','通化','TONGHUA','TH'); 
+citys[94]=new Array('JIL','吉林','JILIN','JL'); 
+citys[95]=new Array('CGQ','长春','CHANGCHUN','CC'); 
+citys[96]=new Array('YNJ','延吉','YANJI','YJ'); 
+citys[97]=new Array('HJJ','芷江','ZHIJIANG','ZJ'); 
+citys[98]=new Array('DYG','张家界','ZHANGJIAJIE','ZJJ'); 
+citys[99]=new Array('CGD','常德','CHANGDE','CD'); 
+citys[100]=new Array('CSX','长沙','CHANGSHA','CS'); 
+citys[101]=new Array('HNY','衡阳','HENGYANG','HY'); 
+citys[102]=new Array('OHE','漠河','MOHE','MH'); 
+citys[103]=new Array('HRB','哈尔滨','HAERBIN','HRB'); 
+citys[104]=new Array('HEK','黑河','HEIHE','HH'); 
+citys[105]=new Array('NDG','齐齐哈尔','QIQIHAER','QQHE'); 
+citys[106]=new Array('JMU','佳木斯','JIAMUSI','JMS'); 
+citys[107]=new Array('MDG','牡丹江','MUDANJIANG','MDJ'); 
+citys[108]=new Array('LYA','洛阳','LUOYANG','LY'); 
+citys[109]=new Array('NNY','南阳','NANYANG','NY'); 
+citys[110]=new Array('CGO','郑州','ZHENGZHOU','ZZ'); 
+citys[111]=new Array('SJW','石家庄','SHIJIAZHUANG','SJZ'); 
+citys[112]=new Array('SHP','秦皇岛','QINHUANGDAO','QHD'); 
+citys[113]=new Array('HDN','邯郸','HANDAN','HD'); 
+citys[114]=new Array('SHS','沙市','SHASHI','SS'); 
+citys[115]=new Array('WUH','武汉','WUHAN','WH'); 
+citys[116]=new Array('XFN','襄樊','XIANGFAN','XF'); 
+citys[117]=new Array('ENH','恩施','ENSHI','ES'); 
+citys[118]=new Array('YIH','宜昌','YICHANG','YC'); 
+citys[119]=new Array('HAK','海口','HAIKOU','HK'); 
+citys[120]=new Array('SYX','三亚','SANYA','SY'); 
+citys[121]=new Array('XYI','兴义','XINGYI','XY'); 
+citys[122]=new Array('KWE','贵阳','GUIYANG','GY'); 
+citys[123]=new Array('TEN','铜仁','TONGREN','TR'); 
+citys[124]=new Array('ZYI','遵义','ZUNYI','ZY'); 
+citys[125]=new Array('BHY','北海','BEIHAI','BH'); 
+citys[126]=new Array('KWL','桂林','GUILIN','GL'); 
+citys[127]=new Array('LZH','柳州','LIUZHOU','LZ'); 
+citys[128]=new Array('NNG','南宁','NANNING','NN'); 
+citys[129]=new Array('BAS','百色','BAISE','BS'); 
+citys[130]=new Array('WUZ','梧州','WUZHOU','WZ'); 
+citys[131]=new Array('THQ','天水','TIANSHUI','null'); 
+citys[132]=new Array('IQN','庆阳','QINGYANG','QY'); 
+citys[133]=new Array('CHW','酒泉','JIUQUAN','JQ'); 
+citys[134]=new Array('JGN','嘉峪关','JIAYUGUAN','JYG'); 
+citys[135]=new Array('DNH','敦煌','DUNHUANG','DH'); 
+citys[136]=new Array('LHW','兰州','LANZHOU','LZ'); 
+citys[137]=new Array('ZHA','湛江','ZHANJIANG','ZJ'); 
+citys[138]=new Array('MXZ','梅州','MEIZHOU','MZ'); 
+citys[139]=new Array('ZUH','珠海','ZHUHAI','ZH'); 
+citys[140]=new Array('SWA','汕头','SHANTOU','ST'); 
+citys[141]=new Array('SZX','深圳','SHENZHEN','SZ'); 
+citys[142]=new Array('CAN','广州','GUANGZHOU','GZ'); 
+citys[143]=new Array('XMN','厦门','XIAMEN','XM'); 
+citys[144]=new Array('WUS','武夷山','WUYISHAN','WYS'); 
+citys[145]=new Array('QHU','泉州','QUANZHOU','QZ'); 
+citys[146]=new Array('LIC','连城','LIANCHENG','LC'); 
+citys[147]=new Array('JJN','晋江','JINJIANG','JJ'); 
+citys[148]=new Array('FOC','福州','FUZHOU','FZ'); 
+citys[149]=new Array('WXN','万县','WANXIAN','WX'); 
+citys[150]=new Array('CKG','重庆','CHONGQING','CQ'); 
+citys[151]=new Array('TXN','黄山','HUANGSHAN','HS'); 
+citys[152]=new Array('BFU','蚌埠','BENGBU','BB'); 
+citys[153]=new Array('FUG','阜阳','FUYANG','FY'); 
+citys[154]=new Array('HFE','合肥','HEFEI','HF'); 
+citys[155]=new Array('AQG','安庆','ANQING','AQ'); 
+citys[156]=new Array('PEK','北京','BEIJING','BJ');

+ 80 - 0
watero-rst-web/src/main/webapp/common/lib/cm.lib/dimensions.js

@@ -0,0 +1,80 @@
+/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ * Download by http://www.mb5u.com
+ * $LastChangedDate: 2007-12-20 08:46:55 -0600 (Thu, 20 Dec 2007) $
+ * $Rev: 4259 $
+ *
+ * Version: 1.2
+ *
+ * Requires: jQuery 1.2+
+ */
+(function($){
+	$.dimensions = {version: '1.2'};
+	/*Create innerHeight, innerWidth, outerHeight and outerWidth methods*/
+	$.each( [ 'Height', 'Width' ], function(i, name){
+		/*innerHeight and innerWidth*/
+		$.fn[ 'inner' + name ] = function() {
+			if (!this[0]) return;
+			var torl = name == 'Height' ? 'Top'    : 'Left',  /*top or left*/
+		    borr = name == 'Height' ? 'Bottom' : 'Right'; /*bottom or right*/
+			return this.is(':visible') ? this[0]['client' + name] : num( this, name.toLowerCase() ) + num(this, 'padding' + torl) + num(this, 'padding' + borr)};
+		
+		/*outerHeight and outerWidth*/
+		$.fn[ 'outer' + name ] = function(options) {
+			if (!this[0]) return;
+			var torl = name == 'Height' ? 'Top'    : 'Left',  /*top or left*/
+		    borr = name == 'Height' ? 'Bottom' : 'Right'; /*bottom or right*/
+			options = $.extend({ margin: false }, options || {});
+			var val = this.is(':visible') ? 
+				this[0]['offset' + name] : num(this, name.toLowerCase())
+				+ num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width')
+				+ num(this, 'padding' + torl) + num(this, 'padding' + borr);
+			return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0)}});
+	
+	/*Create scrollLeft and scrollTop methods*/
+	$.each( ['Left', 'Top'], function(i, name) {
+		$.fn[ 'scroll' + name ] = function(val) {
+			if (!this[0]) return;
+			return val != undefined ?
+			/*Set the scroll offset*/
+			this.each(function() {
+				this == window || this == document ? window.scrollTo( 
+					name == 'Left' ? val : $(window)[ 'scrollLeft' ](),
+					name == 'Top'  ? val : $(window)[ 'scrollTop'  ]()
+					) : this[ 'scroll' + name ] = val}) :
+				/*Return the scroll offset*/ 
+				this[0] == window || this[0] == document ? self[ (
+					name == 'Left' ? 'pageXOffset' : 'pageYOffset') ] ||
+					$.boxModel && document.documentElement[ 'scroll' + name ] ||
+					document.body[ 'scroll' + name ] :
+				this[0][ 'scroll' + name ]}});
+	$.fn.extend({
+		position: function() {
+			var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results;
+			if (elem) {
+				/*Get *real* offsetParent*/
+				offsetParent = this.offsetParent();
+				/*Get correct offsets*/
+				offset       = this.offset();
+				parentOffset = offsetParent.offset();
+				/*Subtract element margins*/ 
+				offset.top  -= num(elem, 'marginTop');
+				offset.left -= num(elem, 'marginLeft');
+				/*Add offsetParent borders*/ 
+				parentOffset.top  += num(offsetParent, 'borderTopWidth');
+				parentOffset.left += num(offsetParent, 'borderLeftWidth');
+				/*Subtract the two offsets*/ 
+				results = {
+					top:  offset.top  - parentOffset.top,
+					left: offset.left - parentOffset.left
+				}}
+			return results},
+		offsetParent: function() {
+			var offsetParent = this[0].offsetParent;
+			while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static'))
+			offsetParent = offsetParent.offsetParent;
+			return $(offsetParent)}
+	});
+	function num(el, prop) {
+		return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0}})(jQuery);

+ 61 - 0
watero-rst-web/src/main/webapp/common/lib/cm.lib/jquery.provincesCity.js

@@ -0,0 +1,61 @@
+/**
+ * jQuery :  城市联动插件
+ * @author   XiaoDong <cssrain@gmail.com>
+ *			 http://www.cssrain.cn
+ * @example  $("#test").ProvinceCity();
+ * @params   暂无
+ */
+$.fn.ProvinceCity = function(){
+	var _self = this;
+	//定义3个默认值
+	_self.data("province",["选择省", "请选择"]);
+	_self.data("city1",["选择市", "请选择"]);
+	_self.data("city2",["选择区", "请选择"]);
+	//插入3个空的下拉框
+	_self.append("<select></select>");
+	_self.append("<select></select>");
+	_self.append("<select></select>");
+	//分别获取3个下拉框
+	var $sel1 = _self.find("select").eq(0);
+	var $sel2 = _self.find("select").eq(1);
+	var $sel3 = _self.find("select").eq(2);
+	//默认省级下拉
+	if(_self.data("province")){
+		$sel1.append("<option value='"+_self.data("province")[1]+"'>"+_self.data("province")[0]+"</option>")}
+	$.each( GP , function(index,data){
+		$sel1.append("<option value='"+data+"'>"+data+"</option>")});
+	//默认的1级城市下拉
+	if(_self.data("city1")){
+		$sel2.append("<option value='"+_self.data("city1")[1]+"'>"+_self.data("city1")[0]+"</option>")}
+	//默认的2级城市下拉
+	if(_self.data("city2")){
+		$sel3.append("<option value='"+_self.data("city2")[1]+"'>"+_self.data("city2")[0]+"</option>")}
+	//省级联动 控制
+	var index1 = "" ;
+	$sel1.change(function(){
+		//清空其它2个下拉框
+		$sel2[0].options.length=0;
+		$sel3[0].options.length=0;
+		index1 = this.selectedIndex;
+		if(index1==0){	//当选择的为 “请选择” 时
+			if(_self.data("city1")){
+				$sel2.append("<option value='"+_self.data("city1")[1]+"'>"+_self.data("city1")[0]+"</option>")}
+			if(_self.data("city2")){
+				$sel3.append("<option value='"+_self.data("city2")[1]+"'>"+_self.data("city2")[0]+"</option>")}
+		}else{
+			$.each( GT[index1-1] , function(index,data){
+				$sel2.append("<option value='"+data+"'>"+data+"</option>")});
+			$.each( GC[index1-1][0] , function(index,data){
+				$sel3.append("<option value='"+data+"'>"+data+"</option>")})
+		}
+	}).change();
+	//1级城市联动 控制
+	var index2 = "" ;
+	$sel2.change(function(){
+		$sel3[0].options.length=0;
+		index2 = this.selectedIndex;
+		$.each( GC[index1-1][index2] , function(index,data){
+			$sel3.append("<option value='"+data+"'>"+data+"</option>")})
+	});
+	return _self;
+};

Разница между файлами не показана из-за своего большого размера
+ 693 - 0
watero-rst-web/src/main/webapp/common/lib/cm.lib/provincesData.js


+ 176 - 0
watero-rst-web/src/main/webapp/common/lib/cm.lib/suggest.js

@@ -0,0 +1,176 @@
+(function($) {
+	$.suggest = function(input, options) {
+		var $input = $(input).attr("autocomplete", "off");
+		var $results;
+		var timeout = false;		// hold timeout ID for suggestion results to appear	
+		var prevLength = 0;			// last recorded length of $input.val()
+		var cache = [];				// cache MRU list
+		var cacheSize = 0;			// size of cache in chars (bytes?)			
+		
+		if($.trim($input.val())=='' || $.trim($input.val())=='请输入搜索城市') $input.val('请输入搜索城市').css('color','#aaa');
+		if( ! options.attachObject )
+			options.attachObject = $(document.createElement("ul")).appendTo('body');
+			$results = $(options.attachObject);
+			$results.addClass(options.resultsClass);			
+			resetPosition();
+		$(window).load(resetPosition)/*just in case user is changing size of page while loading*/
+			.resize(resetPosition);
+			
+		$input.blur(function() {
+			setTimeout(function() { $results.hide() }, 200)});
+			
+		$input.focus(function(){
+			if($.trim($(this).val())=='请输入搜索城市'){
+				$(this).val('').css('color','#000')}
+			if($.trim($(this).val())==''){
+				displayItems('');/*显示热门城市列表*/
+			}
+		});
+		$input.click(function(){
+			var q=$.trim($(this).val());
+			displayItems(q);
+			$(this).select()});
+						
+		/*help IE users if possible*/
+		try {
+			$results.bgiframe()} catch(e) { }
+		$input.keyup(processKey);
+		function resetPosition() {
+			/*requires jquery.dimension plugin*/ 
+			var offset = $input.offset();
+			$results.css({
+				top: '0px',
+				left: '160px'
+			})}	
+
+		function processKey(e) {				
+			/*handling up/down/escape requires results to be visible*/
+			/*handling enter/tab requires that AND a result to be selected*/
+			if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) ||(/^13$|^9$/.test(e.keyCode) && getCurrentResult())) {
+				if (e.preventDefault)
+					e.preventDefault();
+				if (e.stopPropagation)
+					e.stopPropagation();
+	                e.cancelBubble = true;
+	                e.returnValue = false;				
+				switch(e.keyCode) {	
+					case 38: // up
+					prevResult();
+					break;				
+					case 40: // down
+					nextResult();
+					break;
+					case 13: // return
+					selectCurrentResult();
+					break;
+					case 27: //	escape
+					$results.hide();
+					break}					
+			}else if($input.val().length != prevLength) {
+				if (timeout) 
+					clearTimeout(timeout);
+					timeout = setTimeout(suggest, options.delay);
+					prevLength = $input.val().length}			
+				
+			}			
+			function suggest() {
+				var q = $.trim($input.val());
+				displayItems(q)}		
+			function displayItems(items) {
+				var html = '';
+				if (items=='') {//热门城市遍历
+					for(h in options.hot_list){
+						html+='<li rel="'+options.hot_list[h][0]+'"><a href="#'+h+'"><span>'+options.hot_list[h][2]+'</span>'+options.hot_list[h][1]+'</a></li>'}
+					html='<div class="gray ac_result_tip">请输入中文/拼音或者↑↓选择</div><ul>'+html+'</ul>'}
+				else {
+					/*if (!items)
+					return;
+					if (!items.length) {
+						$results.hide();
+						return}*/
+					for (var i = 0; i < options.source.length; i++) {//国内城市匹配
+						var reg = new RegExp('^' + items + '.*$', 'im');
+						if (reg.test(options.source[i][0]) || reg.test(options.source[i][1]) || reg.test(options.source[i][2]) || reg.test(options.source[i][3])) {
+							html += '<li rel="' + options.source[i][0] + '"><a href="#' + i + '"><span>' + options.source[i][2] + '</span>' + options.source[i][1] + '</a></li>'}
+					}
+					if (html == '') {
+						suggest_tip = '<div class="gray ac_result_tip">对不起,找不到:' + items + '</div>'}
+					else {
+						suggest_tip = '<div class="gray ac_result_tip">' + items + ',按拼音排序</div>'}
+					html = suggest_tip + '<ul>' + html + '</ul>'}
+
+				$results.html(html).show();
+				$results.children('ul').children('li:first-child').addClass(options.selectClass);				
+				$results.children('ul')
+					.children('li')
+					.mouseover(function() {
+						$results.children('ul').children('li').removeClass(options.selectClass);
+						$(this).addClass(options.selectClass)})
+					.click(function(e) {
+						e.preventDefault(); 
+						e.stopPropagation();
+						selectCurrentResult()})}
+						
+			function getCurrentResult() {			
+				if (!$results.is(':visible'))
+					return false;			
+				var $currentResult = $results.children('ul').children('li.' + options.selectClass);
+				if (!$currentResult.length)
+					$currentResult = false;
+					return $currentResult}
+			
+			function selectCurrentResult() {			
+				$currentResult = getCurrentResult();			
+				if ($currentResult) {
+					$input.val($currentResult.children('a').html().replace(/<span>.+?<\/span>/i,''));
+					$results.hide();
+					if( $(options.dataContainer) ) {
+						$(options.dataContainer).val($currentResult.attr('rel'))}	
+					if (options.onSelect) {
+						options.onSelect.apply($input[0])}
+				}
+			
+			}
+			
+			function nextResult() {			
+				$currentResult = getCurrentResult();			
+				if ($currentResult)
+					$currentResult
+					.removeClass(options.selectClass)
+					.next()
+					.addClass(options.selectClass);
+				else
+					$results.children('ul').children('li:first-child').addClass(options.selectClass)}
+			
+			function prevResult() {			
+				$currentResult = getCurrentResult();			
+				if ($currentResult)
+					$currentResult
+					.removeClass(options.selectClass)
+					.prev()
+					.addClass(options.selectClass);
+				else
+					$results.children('ul').children('li:last-child').addClass(options.selectClass)}	
+		}
+		
+	$.fn.suggest = function(source, options) {		
+		if (!source)
+			return;		
+			options = options || {};
+			options.source = source;
+			options.hot_list=options.hot_list || [];
+			options.delay = options.delay || 0;
+			options.resultsClass = options.resultsClass || 'ac_results';
+			options.selectClass = options.selectClass || 'ac_over';
+			options.matchClass = options.matchClass || 'ac_match';
+			options.minchars = options.minchars || 1;
+			options.delimiter = options.delimiter || '\n';
+			options.onSelect = options.onSelect || false;
+			options.dataDelimiter = options.dataDelimiter || '\t';
+			options.dataContainer = options.dataContainer || '#SuggestResult';
+			options.attachObject = options.attachObject || null;	
+		this.each(function() {
+			new $.suggest(this, options)});	
+		return this};
+		 // Download by http://www.mb5u.com
+})(jQuery);

BIN
watero-rst-web/src/main/webapp/common/lib/icheck/aero.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/blue.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/green.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/grey.png


+ 182 - 0
watero-rst-web/src/main/webapp/common/lib/icheck/icheck.css

@@ -0,0 +1,182 @@
+/* iCheck.js Minimal skin
+----------------------------------- */
+.icheckbox,.iradio{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(minimal.png) no-repeat;border: none;cursor: pointer}
+.icheckbox,.icheckbox.static:hover{background-position: 0 0}
+.icheckbox.hover,.icheckbox:hover{background-position: -20px 0}
+.icheckbox.checked{background-position: -40px 0}
+.icheckbox.disabled{background-position: -60px 0;cursor: default}
+.icheckbox.checked.disabled{background-position: -80px 0}
+.iradio,.iradio.static:hover{background-position: -100px 0}
+.iradio.hover,.iradio:hover{background-position: -120px 0}
+.iradio.checked{background-position: -140px 0}
+.iradio.disabled{background-position: -160px 0;cursor: default}
+.iradio.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox,.iradio{background-image: url(minimal@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* red */
+.icheckbox-red,.iradio-red{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(red.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-red,.icheckbox-red.static:hover{background-position: 0 0}
+.icheckbox-red.hover,.icheckbox-red:hover{background-position: -20px 0}
+.icheckbox-red.checked{background-position: -40px 0}
+.icheckbox-red.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-red.checked.disabled{background-position: -80px 0}
+.iradio-red,.iradio-red.static:hover{background-position: -100px 0}
+.iradio-red.hover,.iradio-red:hover{background-position: -120px 0}
+.iradio-red.checked{background-position: -140px 0}
+.iradio-red.disabled{background-position: -160px 0;cursor: default}
+.iradio-red.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-red,.iradio-red{background-image: url(red@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* green */
+.icheckbox-green,.iradio-green{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(green.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-green,.icheckbox-green.static:hover{background-position: 0 0}
+.icheckbox-green.hover,.icheckbox-green:hover{background-position: -20px 0}
+.icheckbox-green.checked{background-position: -40px 0}
+.icheckbox-green.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-green.checked.disabled{background-position: -80px 0}
+.iradio-green,.iradio-green.static:hover{background-position: -100px 0}
+.iradio-green.hover,.iradio-green:hover{background-position: -120px 0}
+.iradio-green.checked{background-position: -140px 0}
+.iradio-green.disabled{background-position: -160px 0;cursor: default}
+.iradio-green.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-green,.iradio-green{background-image: url(green@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* blue */
+.icheckbox-blue,.iradio-blue{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(blue.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-blue,.icheckbox-blue.static:hover{background-position: 0 0}
+.icheckbox-blue.hover,.icheckbox-blue:hover{background-position: -20px 0}
+.icheckbox-blue.checked{background-position: -40px 0}
+.icheckbox-blue.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-blue.checked.disabled{background-position: -80px 0}
+.iradio-blue,.iradio-blue.static:hover{background-position: -100px 0}
+.iradio-blue.hover,.iradio-blue:hover{background-position: -120px 0}
+.iradio-blue.checked{background-position: -140px 0}
+.iradio-blue.disabled{background-position: -160px 0;cursor: default}
+.iradio-blue.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-blue,.iradio-blue{background-image: url(blue@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* aero */
+.icheckbox-aero,.iradio-aero{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(aero.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-aero,.icheckbox-aero.static:hover{background-position: 0 0}
+.icheckbox-aero.hover,.icheckbox-aero:hover{background-position: -20px 0}
+.icheckbox-aero.checked{background-position: -40px 0}
+.icheckbox-aero.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-aero.checked.disabled{background-position: -80px 0}
+.iradio-aero,.iradio-aero.static:hover{background-position: -100px 0}
+.iradio-aero.hover,.iradio-aero:hover{background-position: -120px 0}
+.iradio-aero.checked{background-position: -140px 0}
+.iradio-aero.disabled{background-position: -160px 0;cursor: default}
+.iradio-aero.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-aero,.iradio-aero{background-image: url(aero@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* grey */
+.icheckbox-grey,.iradio-grey{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(grey.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-grey,.icheckbox-grey.static:hover{background-position: 0 0}
+.icheckbox-grey.hover,.icheckbox-grey:hover{background-position: -20px 0}
+.icheckbox-grey.checked{background-position: -40px 0}
+.icheckbox-grey.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-grey.checked.disabled{background-position: -80px 0}
+.iradio-grey,.iradio-grey.static:hover{background-position: -100px 0}
+.iradio-grey.hover,.iradio-grey:hover{background-position: -120px 0}
+.iradio-grey.checked{background-position: -140px 0}
+.iradio-grey.disabled{background-position: -160px 0;cursor: default}
+.iradio-grey.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-grey,.iradio-grey{background-image: url(grey@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* orange */
+.icheckbox-orange,.iradio-orange{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(orange.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-orange,.icheckbox-orange.static:hover{background-position: 0 0}
+.icheckbox-orange.hover,.icheckbox-orange:hover{background-position: -20px 0}
+.icheckbox-orange.checked{background-position: -40px 0}
+.icheckbox-orange.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-orange.checked.disabled{background-position: -80px 0}
+.iradio-orange,.iradio-orange.static:hover{background-position: -100px 0}
+.iradio-orange.hover,.iradio-orange:hover{background-position: -120px 0}
+.iradio-orange.checked{background-position: -140px 0}
+.iradio-orange.disabled{background-position: -160px 0;cursor: default}
+.iradio-orange.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-orange,.iradio-orange{background-image: url(orange@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* yellow */
+.icheckbox-yellow,.iradio-yellow{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(yellow.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-yellow,.icheckbox-yellow.static:hover{background-position: 0 0}
+.icheckbox-yellow.hover,.icheckbox-yellow:hover{background-position: -20px 0}
+.icheckbox-yellow.checked{background-position: -40px 0}
+.icheckbox-yellow.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-yellow.checked.disabled{background-position: -80px 0}
+.iradio-yellow,.iradio-yellow.static:hover{background-position: -100px 0}
+.iradio-yellow.hover,.iradio-yellow:hover{background-position: -120px 0}
+.iradio-yellow.checked{background-position: -140px 0}
+.iradio-yellow.disabled{background-position: -160px 0;cursor: default}
+.iradio-yellow.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-yellow,.iradio-yellow{background-image: url(yellow@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* pink */
+.icheckbox-pink,.iradio-pink{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(pink.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-pink,.icheckbox-pink.static:hover{background-position: 0 0}
+.icheckbox-pink.hover,.icheckbox-pink:hover{background-position: -20px 0}
+.icheckbox-pink.checked{background-position: -40px 0}
+.icheckbox-pink.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-pink.checked.disabled{background-position: -80px 0}
+.iradio-pink,.iradio-pink.static:hover{background-position: -100px 0}
+.iradio-pink.hover,.iradio-pink:hover{background-position: -120px 0}
+.iradio-pink.checked{background-position: -140px 0}
+.iradio-pink.disabled{background-position: -160px 0;cursor: default}
+.iradio-pink.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-pink,.iradio-pink{background-image: url(pink@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+/* purple */
+.icheckbox-purple,.iradio-purple{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(purple.png) no-repeat;border: none;cursor: pointer}
+.icheckbox-purple,.icheckbox-purple.static:hover{background-position: 0 0}
+.icheckbox-purple.hover,.icheckbox-purple:hover{background-position: -20px 0}
+.icheckbox-purple.checked{background-position: -40px 0}
+.icheckbox-purple.disabled{background-position: -60px 0;cursor: default}
+.icheckbox-purple.checked.disabled{background-position: -80px 0}
+.iradio-purple,.iradio-purple.static:hover{background-position: -100px 0}
+.iradio-purple.hover,.iradio-purple:hover{background-position: -120px 0}
+.iradio-purple.checked{background-position: -140px 0}
+.iradio-purple.disabled{background-position: -160px 0;cursor: default}
+.iradio-purple.checked.disabled{background-position: -180px 0}
+
+/* Retina support */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-purple,.iradio-purple{background-image: url(purple@2x.png);
+	-webkit-background-size: 200px 20px;
+	background-size: 200px 20px}
+}
+

Разница между файлами не показана из-за своего большого размера
+ 9 - 0
watero-rst-web/src/main/webapp/common/lib/icheck/jquery.icheck.min.js


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/minimal.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/orange.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/pink.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/purple.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/red.png


BIN
watero-rst-web/src/main/webapp/common/lib/icheck/yellow.png