瀏覽代碼

Merge remote-tracking branch 'liujiankang/master'

# Conflicts:
#	watero-rst-web/src/main/resources/watero-rst-orm.xml
liujiankang 7 年之前
父節點
當前提交
ef0193b763
共有 30 個文件被更改,包括 1693 次插入496 次删除
  1. 50 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBatch.java
  2. 30 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBatchColor.java
  3. 25 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBatchService.java
  4. 44 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBatchServiceImpl.java
  5. 0 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java
  6. 20 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBatchMapper.java
  7. 0 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBomMapper.java
  8. 49 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBatchMapper.xml
  9. 1 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml
  10. 157 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBatchController.java
  11. 76 43
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java
  12. 263 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/add_batch.ftl
  13. 126 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/batch_list.ftl
  14. 12 3
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/add_bom.ftl
  15. 141 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_details.ftl
  16. 14 71
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl
  17. 2 2
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/update_bom.ftl
  18. 36 0
      wateroPF-common-core/src/main/java/com/iamberry/wechat/core/entity/machineNumber/MachineNumber.java
  19. 50 0
      wateroPF-common-core/src/main/java/com/iamberry/wechat/core/entity/machineNumber/WarrantyCard.java
  20. 9 3
      wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/machineNumberMapper.xml
  21. 10 0
      wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/QrCodeHandler.java
  22. 136 1
      wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/qrcode/MachineQrCodeHandler.java
  23. 17 5
      wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/statistics/OrderStatisticsHandler.java
  24. 5 1
      wateroPF-wechat-web/src/main/resources/platform.properties
  25. 28 11
      wateroPF-wechat-web/src/main/webapp/WEB-INF/views/admin/qrCode/warrantyCardList.jsp
  26. 24 27
      wateroPF-wechat-web/src/main/webapp/WEB-INF/views/admin/statistics/salesStatistics.jsp
  27. 19 1
      wateroPF-wechat-web/src/main/webapp/WEB-INF/views/wechat/clearing.html
  28. 1 1
      wateroPF-wechat-web/src/main/webapp/WEB-INF/views/wechat/vip_center.html
  29. 346 323
      wateroPF-wechat-web/src/main/webapp/view/add_machine.html
  30. 2 2
      wateroPF-wechat-web/src/main/webapp/view/guanzhu.html

+ 50 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBatch.java

@@ -15,6 +15,10 @@ public class PtsBatch implements Serializable{
 
     private Integer batchQuantity;//批次数量
 
+    private Integer generatedQuantity;  //已生产的数量
+
+    private String batchColorQuantity; //批次不同颜色数量
+
     private Integer bomId;//bom单id
 
     private Integer produceId;//产品id
@@ -31,6 +35,12 @@ public class PtsBatch implements Serializable{
 
     private Date batchUpdateTime;//更新时间
 
+    private String produceName; //产品名称
+
+    private String bomName; //bom单id
+
+    private String softwareVersionNo; //软件版本号
+
     public Integer getBatchId() {
         return batchId;
     }
@@ -118,4 +128,44 @@ public class PtsBatch implements Serializable{
     public void setBatchUpdateTime(Date batchUpdateTime) {
         this.batchUpdateTime = batchUpdateTime;
     }
+
+    public String getBatchColorQuantity() {
+        return batchColorQuantity;
+    }
+
+    public void setBatchColorQuantity(String batchColorQuantity) {
+        this.batchColorQuantity = batchColorQuantity;
+    }
+
+    public String getProduceName() {
+        return produceName;
+    }
+
+    public void setProduceName(String produceName) {
+        this.produceName = produceName;
+    }
+
+    public String getBomName() {
+        return bomName;
+    }
+
+    public void setBomName(String bomName) {
+        this.bomName = bomName;
+    }
+
+    public String getSoftwareVersionNo() {
+        return softwareVersionNo;
+    }
+
+    public void setSoftwareVersionNo(String softwareVersionNo) {
+        this.softwareVersionNo = softwareVersionNo;
+    }
+
+    public Integer getGeneratedQuantity() {
+        return generatedQuantity;
+    }
+
+    public void setGeneratedQuantity(Integer generatedQuantity) {
+        this.generatedQuantity = generatedQuantity;
+    }
 }

+ 30 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBatchColor.java

@@ -0,0 +1,30 @@
+package com.iamberry.rst.core.pts;
+
+import java.io.Serializable;
+
+/**
+ * 一个批次中 不同颜色机器的数量
+ */
+public class PtsBatchColor implements Serializable{
+    private static final long serialVersionUID = 2590891247107356748L;
+
+    private String colorName;
+
+    private Integer colorQuantity;
+
+    public String getColorName() {
+        return colorName;
+    }
+
+    public void setColorName(String colorName) {
+        this.colorName = colorName;
+    }
+
+    public Integer getColorQuantity() {
+        return colorQuantity;
+    }
+
+    public void setColorQuantity(Integer colorQuantity) {
+        this.colorQuantity = colorQuantity;
+    }
+}

+ 25 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBatchService.java

@@ -0,0 +1,25 @@
+package com.iamberry.rst.faces.pts;
+
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.PtsBatch;
+import com.iamberry.rst.core.pts.PtsBatch;
+
+import java.util.List;
+
+/**
+ * 批次管理接口
+ */
+public interface PtsBatchService {
+
+    //查询bom单列表
+    PagedResult<PtsBatch> listPtsBatchPage(int pageNO, int pageSize, PtsBatch ptsBatch, boolean isTotalNum);
+
+    //添加批次
+    Integer savePtsBatch(PtsBatch ptsBatch);
+
+    //查询单个批次
+    PtsBatch getPtsBatch(PtsBatch ptsBatch);
+
+    //修改批次
+    Integer updatePtsBatch(PtsBatch ptsBatch);
+}

+ 44 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBatchServiceImpl.java

@@ -0,0 +1,44 @@
+package com.iamberry.rst.service.pts;
+
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.PtsBatch;
+import com.iamberry.rst.faces.pts.PtsBatchService;
+import com.iamberry.rst.service.pts.mapper.PtsBatchMapper;
+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 PtsBatchServiceImpl implements PtsBatchService {
+
+    @Autowired
+    private PtsBatchMapper ptsBatchMapper;
+
+    @Override
+    public PagedResult<PtsBatch> listPtsBatchPage(int pageNO, int pageSize, PtsBatch ptsBatch, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        List<PtsBatch> list = ptsBatchMapper.listPtsBatch(ptsBatch);
+        return PageUtil.getPage(list);
+    }
+
+    @Override
+    public Integer savePtsBatch(PtsBatch ptsBatch) {
+        return null;
+    }
+
+    @Override
+    public PtsBatch getPtsBatch(PtsBatch ptsBatch) {
+        return null;
+    }
+
+    @Override
+    public Integer updatePtsBatch(PtsBatch ptsBatch) {
+        return null;
+    }
+}

+ 0 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java

@@ -4,7 +4,6 @@ import com.github.pagehelper.PageHelper;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsBom;
 import com.iamberry.rst.core.pts.PtsBomComponents;
-import com.iamberry.rst.core.pts.PtsComponents;
 import com.iamberry.rst.faces.pts.PtsBomService;
 import com.iamberry.rst.service.pts.mapper.PtsBomMapper;
 import com.iamberry.rst.util.PageUtil;

+ 20 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBatchMapper.java

@@ -0,0 +1,20 @@
+package com.iamberry.rst.service.pts.mapper;
+
+import com.iamberry.rst.core.pts.PtsBatch;
+
+import java.util.List;
+
+public interface PtsBatchMapper {
+
+    //查询批次列表
+    List<PtsBatch> listPtsBatch(PtsBatch ptsBatch);
+
+    //添加批次
+    Integer savePtsBatch(PtsBatch ptsBatch);
+
+    //查询单个批次
+    PtsBatch getPtsBatch(PtsBatch ptsBatch);
+
+    //修改批次
+    Integer updatePtsBatch(PtsBatch ptsBatch);
+}

+ 0 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBomMapper.java

@@ -1,6 +1,5 @@
 package com.iamberry.rst.service.pts.mapper;
 
-import com.iamberry.rst.core.pts.Produce;
 import com.iamberry.rst.core.pts.PtsBom;
 import com.iamberry.rst.core.pts.PtsBomComponents;
 

+ 49 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBatchMapper.xml

@@ -0,0 +1,49 @@
+<?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.pts.mapper.PtsBatchMapper">
+
+    <select id="listPtsBatch" parameterType="PtsBatch" resultType="PtsBatch">
+        SELECT
+            t.batch_id AS batchId,
+            t.batch_no AS batchNo,
+            t.batch_quantity AS batchQuantity,
+            t.batch_color_quantity AS batchColorQuantity,
+            t.bom_id AS bomId,
+            t.produce_id AS produceId,
+            t.batch_software_version_id AS batchSoftwareVersionId,
+            t.batch_status AS  batchStatus,
+            t.batch_desc AS batchDesc,
+            t.batch_create_time AS batchCreateTime,
+            t.batch_update_time AS batchUpdateTime,
+            trpp.produce_name AS produceName,
+            trpb.bom_name AS bomName,
+            tepmv.machine_version_no AS  softwareVersionNo,
+            count(tbpm.machine_id) AS generatedQuantity
+        FROM
+            	tb_rst_pts_batch t
+        LEFT JOIN tb_rst_pts_produce trpp ON t.produce_id = trpp.produce_id
+        LEFT JOIN tb_rst_pts_bom trpb ON t.bom_id = trpb.bom_id
+        LEFT JOIN tb_rst_pts_machine_version tepmv ON t.batch_software_version_id = tepmv.machine_version_id
+        LEFT JOIN tb_rst_pts_machine tbpm  ON t.batch_id = tbpm.machine_batch_id
+        <where>
+            <if test="produceId !=null">
+                AND t.produce_id = #{produceId}
+            </if>
+            <if test="batchNo !=null and batchNo !=''">
+                AND t.batch_no like CONCAT('%',#{batchNo},'%')
+            </if>
+        </where>
+    </select>
+
+    <select id="getPtsBatch" parameterType="PtsBatch" resultType="PtsBatch">
+
+    </select>
+
+    <insert id="savePtsBatch" parameterType="PtsBatch" useGeneratedKeys="true" keyProperty="batchId">
+
+    </insert>
+
+    <update id="updatePtsBatch" parameterType="PtsBatch">
+
+    </update>
+</mapper>

+ 1 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml

@@ -36,6 +36,7 @@
             </if>
         </where>
         GROUP BY trpb.bom_id
+        ORDER BY trpb.bom_id DESC
     </select>
 
     <select id="getPtsBom" parameterType="PtsBom" resultType="PtsBom">

+ 157 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBatchController.java

@@ -0,0 +1,157 @@
+package com.iamberry.rst.controllers.pts;
+
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.PtsBatch;
+import com.iamberry.rst.core.pts.PtsBom;
+import com.iamberry.rst.core.pts.PtsMachineVersion;
+import com.iamberry.rst.faces.pts.ProduceService;
+import com.iamberry.rst.faces.pts.PtsBatchService;
+import com.iamberry.rst.faces.pts.PtsBomService;
+import com.iamberry.rst.utils.StitchAttrUtil;
+import com.iamberry.wechat.tools.ResponseJson;
+import org.apache.shiro.authz.annotation.Logical;
+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.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 批次管理controller
+ *
+ * @author wxm
+ */
+@Controller
+@RequestMapping("/admin/batch")
+public class AdminPtsBatchController {
+
+    @Autowired
+    private PtsBatchService ptsBatchService;
+
+    @Autowired
+    private ProduceService produceService;
+
+    @Autowired
+    private PtsBomService ptsBomService;
+
+    /**
+     * 获取batch单列表
+     *
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("batch:select:list")
+    @RequestMapping("/_batch_list")
+    public ModelAndView getPtsBatch(HttpServletRequest request, PtsBatch ptsBatch,
+                                    @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("pts/batch/batch_list");
+        PagedResult<PtsBatch> pagedResult = ptsBatchService.listPtsBatchPage(pageNO, pageSize, ptsBatch, totalNum == 0);
+        if (totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+        }
+        StitchAttrUtil.setModelAndView(ptsBatch, mv, "/admin/batch/_batch_list", pagedResult);
+
+        //获取产品集合,用于页面选择产品
+        List<Produce> list = produceService.getProduceList();
+        mv.addObject("produceList", list);
+        return mv;
+    }
+
+
+    /**
+     * 跳转到添加batch单页面
+     *
+     * @return
+     */
+    @RequiresPermissions("batch:add:batch")
+    @RequestMapping(value = "/to_add_batch")
+    public ModelAndView toAddBom(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("pts/batch/add_batch");
+
+        //获取产品集合,用于页面选择产品
+        List<Produce> produceList = produceService.getProduceList();
+
+        mv.addObject("produceList", produceList);
+        return mv;
+    }
+
+    /**
+     * 添加batch单
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("batch:add:batch")
+    @RequestMapping(value = "/save_batch")
+    public ResponseJson saveBom(PtsBatch ptsBatch, String batchComponentJson, HttpServletRequest request) {
+
+        if (!this.isValiData(ptsBatch) || batchComponentJson == null) {
+            return new ResponseJson(500, "ERROR", 500);
+        }
+
+        return new ResponseJson(200, "添加成功", 200);
+
+//        JSONArray jsonArray = JSONArray.fromObject(batchComponentJson);
+//        List<PtsBatchComponents> ptsBatchComponentsList = (List) JSONArray.toCollection(jsonArray, PtsBatchComponents.class);
+//        ptsBatch.setPtsBatchComponentsList(ptsBatchComponentsList);
+//
+//        Integer flag = ptsBatchService.savePtsBatch(ptsBatch);
+//
+//        if (flag < 1) {
+//            return new ResponseJson(500, "添加失败", 500);
+//        } else {
+//            return new ResponseJson(200, "添加成功", 200);
+//        }
+    }
+
+
+    /**
+     * 获取版本,根据produce
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value = {"batch:add:batch", "batch:update:batch"}, logical = Logical.OR)
+    @RequestMapping(value = "/get_version")
+    public ResponseJson getBom(HttpServletRequest request) {
+
+        String produceId = request.getParameter("produceId");
+        if (produceId == null || "".equals(produceId)) {
+            return new ResponseJson(500, "ERROR", 500);
+        }
+
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        ptsMachineVersion.setProduceId(Integer.valueOf(produceId));
+        List<PtsMachineVersion> ptsMachineVersionList = null; //ptsBomService.listPtsMachineVersionByPro(ptsMachineVersion);
+
+        if (ptsMachineVersionList != null) {
+            ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+            rj.addResponseKeyValue("ptsMachineVersionList", ptsMachineVersionList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "ERROR", 500);
+        }
+    }
+
+
+    /***
+     * 验证信息
+     * @param ptsBatch
+     * @return
+     */
+    public boolean isValiData(PtsBatch ptsBatch) {
+        boolean flag = true;
+
+        return flag;
+    }
+
+
+}

+ 76 - 43
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java

@@ -1,7 +1,10 @@
 package com.iamberry.rst.controllers.pts;
 
 import com.iamberry.rst.core.page.PagedResult;
-import com.iamberry.rst.core.pts.*;
+import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.PtsBom;
+import com.iamberry.rst.core.pts.PtsBomComponents;
+import com.iamberry.rst.core.pts.PtsComponents;
 import com.iamberry.rst.faces.pts.MachinePartsService;
 import com.iamberry.rst.faces.pts.ProduceService;
 import com.iamberry.rst.faces.pts.PtsBomService;
@@ -11,7 +14,6 @@ import net.sf.json.JSONArray;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -19,7 +21,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -47,19 +48,19 @@ public class AdminPtsBomController {
      */
     @RequiresPermissions("bom:select:list")
     @RequestMapping("/_bom_list")
-    public ModelAndView getPtsBom(HttpServletRequest request,PtsBom ptsBom,
+    public ModelAndView getPtsBom(HttpServletRequest request, PtsBom ptsBom,
                                   @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("pts/bom/bom_list");
         PagedResult<PtsBom> pagedResult = ptsBomService.listPtsBom(pageNO, pageSize, ptsBom, totalNum == 0);
-        if (totalNum != 0){
+        if (totalNum != 0) {
             pagedResult.setTotal(totalNum);
         }
 
         //获取产品集合,用于页面选择产品
         List<Produce> list = produceService.getProduceList();
-        mv.addObject("produceList",list);
+        mv.addObject("produceList", list);
 
         StitchAttrUtil.setModelAndView(ptsBom, mv, "/admin/bom/_bom_list", pagedResult);
         return mv;
@@ -71,14 +72,14 @@ public class AdminPtsBomController {
      * @return
      */
     @RequiresPermissions("bom:add:bom")
-    @RequestMapping(value="/to_add_bom")
-    public ModelAndView toAddBom(String BomId, HttpServletRequest request) {
+    @RequestMapping(value = "/to_add_bom")
+    public ModelAndView toAddBom(HttpServletRequest request) {
         ModelAndView mv = new ModelAndView("pts/bom/add_bom");
 
         //获取产品集合,用于页面选择产品
         List<Produce> produceList = produceService.getProduceList();
 
-        mv.addObject("produceList",produceList);
+        mv.addObject("produceList", produceList);
         return mv;
     }
 
@@ -89,29 +90,29 @@ public class AdminPtsBomController {
      */
     @ResponseBody
     @RequiresPermissions("bom:add:bom")
-    @RequestMapping(value="/save_bom")
+    @RequestMapping(value = "/save_bom")
     public ResponseJson saveBom(PtsBom ptsBom, String bomComponentJson, HttpServletRequest request) {
 
-        if(!this.isValiData(ptsBom) || bomComponentJson == null){
+        if (!this.isValiData(ptsBom) || bomComponentJson == null) {
             return new ResponseJson(500, "ERROR", 500);
         }
 
         JSONArray jsonArray = JSONArray.fromObject(bomComponentJson);
-        List<PtsBomComponents> ptsBomComponentsList  = (List) JSONArray.toCollection(jsonArray,PtsBomComponents.class);
+        List<PtsBomComponents> ptsBomComponentsList = (List) JSONArray.toCollection(jsonArray, PtsBomComponents.class);
         ptsBom.setPtsBomComponentsList(ptsBomComponentsList);
 
         Integer flag = ptsBomService.savePtsBom(ptsBom);
 
-        if (flag < 1 ){
+        if (flag < 1) {
             return new ResponseJson(500, "添加失败", 500);
-        }else {
+        } else {
             return new ResponseJson(200, "添加成功", 200);
         }
     }
 
-    public boolean isValiData(PtsBom ptsBom){
+    public boolean isValiData(PtsBom ptsBom) {
         boolean flag = true;
-        if(ptsBom.getBomName() != null && "".equals(ptsBom.getBomName())){
+        if (ptsBom.getBomName() != null && "".equals(ptsBom.getBomName())) {
 
         }
 
@@ -124,12 +125,12 @@ public class AdminPtsBomController {
      * @return
      */
     @ResponseBody
-    @RequiresPermissions(value={"bom:add:bom","bom:update:bom"},logical= Logical.OR)
-    @RequestMapping(value="/get_listBom")
+    @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR)
+    @RequestMapping(value = "/get_listBom")
     public ResponseJson listBomByProduceId(HttpServletRequest request) {
 
         String produceId = request.getParameter("produceId");
-        if (produceId == null || "".equals(produceId)){
+        if (produceId == null || "".equals(produceId)) {
             return new ResponseJson(500, "ERROR", 500);
         }
 
@@ -137,11 +138,11 @@ public class AdminPtsBomController {
         ptsBom.setProduceId(Integer.valueOf(produceId));
         List<PtsBom> ptsBomsList = ptsBomService.listBom(ptsBom);
 
-        if (ptsBomsList != null ){
+        if (ptsBomsList != null) {
             ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
-            rj.addResponseKeyValue("ptsBomsList",ptsBomsList);
+            rj.addResponseKeyValue("ptsBomsList", ptsBomsList);
             return rj;
-        }else {
+        } else {
             return new ResponseJson(500, "ERROR", 500);
         }
     }
@@ -152,12 +153,12 @@ public class AdminPtsBomController {
      * @return
      */
     @ResponseBody
-    @RequiresPermissions(value={"bom:add:bom","bom:update:bom"},logical= Logical.OR)
-    @RequestMapping(value="/get_bom")
+    @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR)
+    @RequestMapping(value = "/get_bom")
     public ResponseJson getBom(HttpServletRequest request) {
 
         String bomId = request.getParameter("bomId");
-        if (bomId == null || "".equals(bomId)){
+        if (bomId == null || "".equals(bomId)) {
             return new ResponseJson(500, "ERROR", 500);
         }
 
@@ -165,11 +166,11 @@ public class AdminPtsBomController {
         ptsBom.setBomId(Integer.valueOf(bomId));
         ptsBom = ptsBomService.getPtsBom(ptsBom);
 
-        if (ptsBom != null ){
+        if (ptsBom != null) {
             ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
-            rj.addResponseKeyValue("ptsBom",ptsBom);
+            rj.addResponseKeyValue("ptsBom", ptsBom);
             return rj;
-        }else {
+        } else {
             return new ResponseJson(500, "ERROR", 500);
         }
     }
@@ -180,12 +181,12 @@ public class AdminPtsBomController {
      * @return
      */
     @ResponseBody
-    @RequiresPermissions(value={"bom:add:bom","bom:update:bom"},logical= Logical.OR)
-    @RequestMapping(value="/get_listComponents")
+    @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR)
+    @RequestMapping(value = "/get_listComponents")
     public ResponseJson listComponents(HttpServletRequest request) {
 
         String produceId = request.getParameter("produceId");
-        if (produceId == null || "".equals(produceId)){
+        if (produceId == null || "".equals(produceId)) {
             return new ResponseJson(500, "ERROR", 500);
         }
         PtsComponents ptsComponents = new PtsComponents();
@@ -194,11 +195,11 @@ public class AdminPtsBomController {
         //查询所有零件
         List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents);
 
-        if (ptsComponentsList != null ){
+        if (ptsComponentsList != null) {
             ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
-            rj.addResponseKeyValue("ptsComponentsList",ptsComponentsList);
+            rj.addResponseKeyValue("ptsComponentsList", ptsComponentsList);
             return rj;
-        }else {
+        } else {
             return new ResponseJson(500, "ERROR", 500);
         }
     }
@@ -210,10 +211,10 @@ public class AdminPtsBomController {
      */
     @ResponseBody
     @RequiresPermissions("bom:update:bom")
-    @RequestMapping(value="/to_update_bom")
+    @RequestMapping(value = "/to_update_bom")
     public ModelAndView toUpdateBom(String bomId, HttpServletRequest request) {
         ModelAndView mv = new ModelAndView("pts/bom/update_bom");
-        if (bomId == null || "".equals(bomId)){
+        if (bomId == null || "".equals(bomId)) {
             return mv;
         }
         //获取产品集合,用于页面选择产品
@@ -230,9 +231,9 @@ public class AdminPtsBomController {
         ptsComponents.setComponentsStatus(1);
         List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents);
 
-        mv.addObject("produceList",produceList);
-        mv.addObject("ptsBom",ptsBom);
-        mv.addObject("ptsComponentsList",ptsComponentsList);
+        mv.addObject("produceList", produceList);
+        mv.addObject("ptsBom", ptsBom);
+        mv.addObject("ptsComponentsList", ptsComponentsList);
         return mv;
     }
 
@@ -243,21 +244,53 @@ public class AdminPtsBomController {
      */
     @ResponseBody
     @RequiresPermissions("bom:add:bom")
-    @RequestMapping(value="/update_bom")
+    @RequestMapping(value = "/update_bom")
     public ResponseJson updateBom(PtsBom ptsBom, String bomComponentJson, HttpServletRequest request) {
 
         JSONArray jsonArray = JSONArray.fromObject(bomComponentJson);
-        List<PtsBomComponents> ptsBomComponentsList  = (List) JSONArray.toCollection(jsonArray,PtsBomComponents.class);
+        List<PtsBomComponents> ptsBomComponentsList = (List) JSONArray.toCollection(jsonArray, PtsBomComponents.class);
         ptsBom.setPtsBomComponentsList(ptsBomComponentsList);
 
         ptsBom.setProduceId(null);
 
         Integer flag = ptsBomService.updatePtsBom(ptsBom);
 
-        if (flag < 1 ){
+        if (flag < 1) {
             return new ResponseJson(500, "修改失败", 500);
-        }else {
+        } else {
             return new ResponseJson(200, "修改成功", 200);
         }
     }
+
+    /**
+     * 获取bom单详情
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("bom:select:details")
+    @RequestMapping(value = "/to_details_bom")
+    public ModelAndView toBomDetails(String bomId, HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("pts/bom/bom_details");
+        if (bomId == null || "".equals(bomId)) {
+            return mv;
+        }
+
+        //查询bom信息
+        PtsBom ptsBom = new PtsBom();
+        ptsBom.setBomId(Integer.valueOf(bomId));
+        ptsBom = ptsBomService.getPtsBom(ptsBom);
+
+        //所有零件
+        PtsComponents ptsComponents = new PtsComponents();
+        ptsComponents.setProduceId(ptsBom.getProduceId());
+        ptsComponents.setComponentsStatus(1);
+        List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents);
+
+        mv.addObject("ptsBom", ptsBom);
+        mv.addObject("ptsComponentsList", ptsComponentsList);
+        return mv;
+    }
+
+
 }

+ 263 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/add_batch.ftl

@@ -0,0 +1,263 @@
+<!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">
+    <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <style>
+        .add-list>li{margin: 10px 0;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/rst/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(/rst/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+    <title>添加批次 - 批次管理 - RST</title>
+</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>
+<article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
+    <form action="${path}/admin/batch/save_batch" method="post" class="form form-horizontal" id="form-batch-add">
+
+        <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"> <span class="select-box">
+				<select class="select" size="1" name="produceId">
+                <#if produceList?? &&  (produceList?size > 0) >
+                    <#list produceList as produce>
+                        <option value="${produce.produceId}" >${produce.produceName}</option>
+                    </#list>
+                <#else>
+                    <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
+                </#if>
+				</select>
+				</span>
+            </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="batchNo" name="batchNo" placeholder="请输入1-20位的名称,支持字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,20}$/" errormsg="请输入1-20位的名称,支持字母、数字!">
+            </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 components">
+                <input type="hidden" id="batchColorJson" name="batchColorJson">
+                <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>
+                    </tr>
+                    </thead>
+                    <tbody id="batchColorAll">
+                    </tbody>
+                </table>
+            </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="batchQuantity" name="batchQuantity" placeholder="该批次的总数量,只能输入数字且不能超过999999" datatype="n1-3" errormsg="批次数量只能输入数字且不能超过999999!">
+            </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">
+                <span class="select-box">
+				    <select class="select" size="1" name="batchSoftwareVersionId" id="batchSoftwareVersionId">
+				    </select>
+				</span>
+            </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">Bom单:</label>
+            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
+				<select class="select" size="1" name="bomId" id="bomId">
+				</select>
+				</span>
+            </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">
+                <div class="radio-box">
+                    <input type="radio" id="batchStatus-1" name="batchStatus" checked >
+                    <label for="batchStatus-1">立即使用</label>
+                </div>
+                <div class="radio-box">
+                    <input type="radio" id="batchStatus-2" name="batchStatus">
+                    <label for="batchStatus-2">暂不使用</label>
+                </div>
+            </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="batchDesc" id="batchDesc" cols="" rows="" class="textarea"
+                          placeholder="批次描述,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" ></textarea>
+                <p class="textarea-numberbar"><em class="textarea-length">0</em>/100</p>
+            </div>
+        </div>
+
+
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"></label>
+            <span class="c-red">*提示</span><span>:如果设置状态为 使用,将停止使用同一个产品的其他批次!</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>
+        </div>
+    </form>
+</article>
+<script type="text/javascript">
+
+    $(function(){
+        $("#form-batch-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) {  //验证通过之后执行的函数
+            },
+            callback: function (data) {//异步回调函数
+                if (data) {
+                    var index = layer.alert(data.resultMsg, function () {
+                        if (data.resultCode == 200) {
+                            location.href = "${path}/admin/batch/_batch_list";
+                        } else {
+                            layer.close(index);
+                        }
+                    });
+                }
+            }
+        });
+    })
+
+    /*颜色枚举值全局变量*/
+    var colorAll = ['黑','红','橙','黄','绿','青','蓝','紫','白']
+
+    $(function () {
+        /*添加页面初始化,将根据产品的来获取bom和软件版本*/
+        var produceId =   $("[name='produceId']").val();
+        getBomByProduce(produceId);
+        getVersionByProduce(produceId);
+
+        /*初始化一个颜色*/
+        addBatchColor();
+
+        /*监听产品选择*/
+//        $("[name='produceId']").change(function(){
+//            var produceId = $(this).val();
+//            getBomByProduce(produceId);
+//        })
+    })
+
+    /*根据产品id,获取bom集合*/
+    function getBomByProduce(produceId){
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listBom",
+            async: false,
+            success: function(data){
+                var html = '';
+                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>';
+                    }
+                }
+                if(data.returnCode != 200 || data.returnMsg.ptsBomsList <1){
+                    layer.msg('系统没有对应产品的Bom单,请到Bom单管理中添加Bom', {icon: 5, time: 3000});
+                }
+                $("[name='bomId']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*根据产品获取软件版本*/
+    function getVersionByProduce(produceId) {
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/batch/get_listBatch",
+            async: false,
+            success: function(data){
+                var html = '';
+                if (data.returnCode == 200) {
+                    var versionList = data.returnMsg.ptsMachineVersionList;
+                    for(var i=0;i<versionList.length;i++){
+                        html += '<option value="'+ versionList[i].machineVersionId +'">'+ versionList[i].machineVersionName +'('+ versionList[i].machineVersionNo +')</option>';
+                    }
+                }
+                if(data.returnCode != 200 || data.returnMsg.ptsMachineVersionList <1){
+                    layer.msg('系统没有对应产品的Bom单,请到Bom单管理中添加Bom', {icon: 5, time: 3000});
+                }
+                $("[name='bomId']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*添加颜色*/
+    function addBatchColor() {
+        //获取颜色枚举值
+        getColorAll();
+
+    }
+
+    /*获取颜色枚举值*/
+    function getColorAll() {
+        for(var i++; i<colorAll.length;i++){
+
+        }
+    }
+</script>
+<!--/请在上方写此页面业务相关的脚本-->
+</body>
+</html>

+ 126 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/batch_list.ftl

@@ -0,0 +1,126 @@
+<!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(/rst/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(/rst/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(/rst/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/batch/_batch_list" method="post">
+            <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddBom();">增加批次</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="${batchNo!''}" placeholder="批次编号" id="batchNo" name="batchNo">
+            <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">
+            <th width="50">所属产品</th>
+            <th width="60">批次编号</th>
+            <th width="100">总数量</th>
+            <th width="80">生产数量</th>
+            <th width="80">状态</th>
+            <th width="100">软件版本</th>
+            <th width="80">Bom单名称</th>
+            <th width="80">时间</th>
+            <th width="80">操作</th>
+        </tr>
+        </thead>
+        <tbody>
+            <#if page.dataList?? &&  (page.dataList?size > 0) >
+                    <#list page.dataList as batch>
+                        <tr class="text-c">
+                            <td>${batch.produceName!''}</td>
+                            <td>${batch.batchNo!''}</td>
+                            <td>${batch.batchQuantity!'0'}</td>
+                            <td>${batch.generatedQuantity!'0'}</td>
+                            <td>
+                                <#if batch.batchStatus??>
+                                    <#if batch.batchStatus == 1>正常使用</#if>
+                                    <#if batch.batchStatus == 0>已停用</#if>
+                                </#if>
+                            </td>
+                            <td>${batch.softwareVersionNo!''}</td>
+                            <td>${batch.bomName!''}</td>
+                            <td>${(batch.batchCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                            <td>
+                                <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_batch(${batch.batchId!''})">
+                                    <i class="Hui-iconfont">&#xe6df;</i>
+                                </a>&nbsp;
+                                <a style="text-decoration:none" href="javascript:void(0);" title="查看batch单详情" onclick="admin_details_batch(${batch.batchId!''})">
+                                    <i class="Hui-iconfont">&#xe665;</i>
+                                </a>
+                            </td>
+                        </tr>
+                    </#list>
+            <#else>
+                <tr><td colspan="9" class="td-manage text-c" >暂时没有批次,请添加!</td></tr>
+            </#if>
+        </tbody>
+    </table>
+    </div>
+</div>
+<tfoot>
+<#include "/base/page_util.ftl">
+</tfoot>
+<script>
+    /**
+     * 跳转到添加batch页面
+     */
+    function toAddBom(){
+        window.location.href= "${path}/admin/batch/to_add_batch";
+    }
+
+    /**
+     *跳转到编辑页面
+     * @param employee
+     */
+    function admin_update_batch(batchId) {
+        window.location.href= "${path}/admin/batch/to_update_batch?batchId="+batchId;
+    }
+
+    /**
+     *跳转到详情页面
+     * @param employee
+     */
+    function admin_details_batch(batchId) {
+        window.location.href= "${path}/admin/batch/to_details_batch?batchId="+batchId;
+    }
+
+</script>
+</body>
+</html>

+ 12 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/add_bom.ftl

@@ -10,6 +10,9 @@
 <#include "/base/add_base.ftl">
     <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
     <style>
+        .add-list>li{margin: 10px 0;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/rst/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(/rst/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
     </style>
     <title>添加Bom - Bom管理 - RST</title>
 </head>
@@ -52,7 +55,7 @@
         <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-30位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,30}$/" errormsg="请输入1-30位的名称,支持中文、字母、数字!">
+                <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>
         </div>
 
@@ -139,7 +142,7 @@
             callback: function (data) {//异步回调函数
                 if (data) {
                     var index = layer.alert(data.resultMsg, function () {
-                        if (data.Success) {
+                        if (data.resultCode == 200) {
                             location.href = "${path}/admin/bom/_bom_list";
                         } else {
                             layer.close(index);
@@ -216,7 +219,13 @@
                 $(this).remove();
             })
         }else{
-            $(node).parent().parent().remove();
+            //删除零件必须保证还有一个零件
+            var componentLength = $("#componentaAll").find("tr").length;
+            if(componentLength > 1){
+                $(node).parent().parent().remove();
+            }else{
+                layer.msg('必须要有一个零件', {icon: 5, time: 3000});
+            }
         }
     }
 

+ 141 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_details.ftl

@@ -0,0 +1,141 @@
+<!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">
+    <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <style>
+        .content { width: 100%; margin: 0 auto;font-size: 12px;}
+        .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: 5px 10px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-span{padding: 5px 10px;width: 80%;}
+        .my-input-date{padding: 5px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(${path}/common/images/pts//rili-1.png) 98.5% center no-repeat; background-size:auto 80%;}
+        .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: 6px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 6px 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(${path}/common/images/pts/select-1.png) right center no-repeat #fff;background-size:auto 100%;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/rst/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(/rst/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        .my-con-right{width: 80px;float: left; text-align: right; }
+        .my-con-left{width: 80%; display: block; float: left;padding-left: 20px; font-size: 14px;line-height: 20px;}
+        .my-con-text{width: 80%; padding-left: 8px; }
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+    </style>
+    <title>Bom单详情 - Bom管理 - RST</title>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> Bom管理
+    <span class="c-gray en">&gt;</span> Bom单详情
+    <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>
+<article class="page-container">
+    <form action="${path}/admin/bom/update_bom" method="post" class="form form-horizontal" id="form-bom-update">
+        <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="reback();">&lt;&lt;返回Bom列表</button></br></br>
+
+        <div style="padding: 10px;">
+            <div class="my-title">Bom单详情</div>
+            <input type="hidden" value="${ptsBom.bomId}" id="bomId" name="bomId">
+            <input type="hidden" value="${ptsBom.produceId}" id="produceId" name="produceId">
+
+            <div class="input-box">
+                <span class="my-con-right content">所属产品:</span>&nbsp;&nbsp;
+                <span class="my-con-left content">${ptsBom.produceName}</span>
+            </div>
+
+            <div class="input-box">
+                <span class="my-con-right content">Bom名称:</span>&nbsp;&nbsp;
+                <span class="my-con-left content">${ptsBom.bomName}</span>
+            </div>
+
+            <div class="input-box">
+                <span class="my-con-right content">Bom备注:</span>&nbsp;&nbsp;
+                <span class="my-con-text content">${ptsBom.bomRemarks ! ''}</span>
+            </div>
+
+            <div class="input-box">
+                <span class="my-con-right content">零件总成本:</span>&nbsp;&nbsp;
+                <span class="my-con-text content"><#if ptsBom.allComponentsCost?? >${ptsBom.allComponentsCost/100}</#if>(元)</span>
+            </div>
+
+            <div class="input-box">
+                <span class="my-con-right content">零件总重量:</span>&nbsp;&nbsp;
+                <span class="my-con-text content">${ptsBom.allComponentsWeight ! ''}(g)</span>
+            </div>
+
+            <div class="my-title">Bom零件清单</div>
+
+            <div class="row cl" style="margin-left: 20px">
+                <div class="formControls col-xs-8 col-sm-9 components" style=" padding-left: 0px;">
+                    <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="80">零件编号</th>
+                            <th width="">零件名称</th>
+                            <th width="">零件数量</th>
+                            <th width="">零件成本(元)</th>
+                            <th width="">零件净重(g)</th>
+                            <th width="">零件供应商</th>
+                        </tr>
+                        </thead>
+                        <tbody id="componentaAll">
+                        <#if ptsBom.ptsBomComponentsList?? &&  (ptsBom.ptsBomComponentsList?size > 0) >
+                            <#list ptsBom.ptsBomComponentsList  as bomComponents>
+                                <#list ptsComponentsList as ptsComponents>
+                                    <#if bomComponents.componentsId == ptsComponents.componentsId >
+                                        <#assign compont = ptsComponents/>
+                                    </#if>
+                                </#list>
+
+                            <tr class="text-c">
+                                <td>
+                                    ${compont.componentsNo}
+                                </td>
+                                <td>
+                                    ${compont.componentsName}
+                                </td>
+                                <td>
+                                    ${bomComponents.bomComponentsQuantity}
+                                </td>
+                                <td>
+                                    <#if compont.componentsCost?? >${compont.componentsCost/100}</#if>
+                                </td>
+                                <td>
+                                    ${compont.componentsWeight}
+                                </td>
+                                <td>
+                                    ${compont.supplierName}
+                                </td>
+                            </tr>
+                            </#list>
+                        </#if>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+        </div>
+    </form>
+</article>
+<script type="text/javascript">
+
+    /*返回列表*/
+    function reback() {
+        window.history.back();
+    }
+</script>
+<!--/请在上方写此页面业务相关的脚本-->
+</body>
+</html>

+ 14 - 71
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl

@@ -55,7 +55,7 @@
             <th width="60">所属产品</th>
             <th width="100">bom名称</th>
             <th width="80">零件总成本(元)</th>
-            <th width="80">零件总重(KG)</th>
+            <th width="80">零件总重(g)</th>
             <th width="100">备注</th>
             <th width="80">最近修改时间</th>
             <th width="80">添加时间</th>
@@ -70,13 +70,16 @@
                             <td>${bom.produceName!''}</td>
                             <td>${bom.bomName!''}</td>
                             <td><#if bom.allComponentsCost?? >${bom.allComponentsCost/100}</#if></td>
-                            <td><#if bom.allComponentsWeight?? >${bom.allComponentsWeight/1000}</#if></td>
+                            <td><#if bom.allComponentsWeight?? >${bom.allComponentsWeight}</#if></td>
                             <td>${bom.bomRemarks!''}</td>
                             <td>${(bom.bomUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>${(bom.bomCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>
                                 <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_bom(${bom.bomId!''})">
                                     <i class="Hui-iconfont">&#xe6df;</i>
+                                </a>&nbsp;
+                                <a style="text-decoration:none" href="javascript:void(0);" title="查看bom单详情" onclick="admin_details_bom(${bom.bomId!''})">
+                                    <i class="Hui-iconfont">&#xe665;</i>
                                 </a>
                             </td>
                         </tr>
@@ -91,75 +94,6 @@
 <tfoot>
 <#include "/base/page_util.ftl">
 </tfoot>
-<script type="text/javascript">
-    /*
-        参数解释:
-        title	标题
-        url		请求的url
-        id		需要操作的数据id
-        w		弹出层宽度(缺省调默认值)
-        h		弹出层高度(缺省调默认值)
-    */
-
-
-    /*子页面添加完信息后回显添加结果是否成功*/
-    function admin_result(str,num) {
-        layer.msg(str,{icon:num,time:1000});
-    }
-
-    function edit_process(url) {
-        window.location.href = url
-    }
-
-    /*管理员-详情*/
-    function admin_add_filter(url){
-        window.location.href= url;
-    }
-    /*管理员-删除*/
-    function admin_del(obj,id){
-        layer.confirm('确认要删除吗?',function(index){
-            $.ajax({
-                type: 'POST',
-                url: '',
-                dataType: 'json',
-                success: function(data){
-                    $(obj).parents("tr").remove();
-                    layer.msg('已删除!',{icon:1,time:1000});
-                },
-                error:function(data) {
-                    console.log(data.msg);
-                },
-            });
-        });
-    }
-
-    /*管理员-编辑*/
-    function admin_edit(title,url,id,w,h){
-        layer_show(title,url,w,h);
-    }
-    /* 录入FAQ */
-    function add_FAQ(menuId,type) {
-        window.location.href= root_path + "/admin/faq/_add_FAQ?menuId="+menuId+"&menuType="+type;
-       // layer_show("增加FAQ", root_path + "/admin/faq/_add_FAQ?menuId="+menuId+"&menuType="+type);
-    }
-
-    /* 修改二级菜单状态 */
-    function update_FAQState(detaId) {
-        layer.confirm('确认要停用吗?',function(index){
-            $.post(root_path + "/admin/faq/updat_FAQState",{detaId:detaId}, function(result){
-                if (result.returnCode != 200 || result.returnCode != 200) {
-                    layer.msg('修改失败,请重试!',{icon: 5,time:3000});
-                } else {
-                    layer.msg('修改成功!',{icon: 1,time:2000}, function () {
-                        // 关闭当前页面,并刷新父级页面
-                        window.location.reload();
-                    });
-                }
-            });
-        });
-    }
-
-</script>
 <script>
     /**
      * 跳转到添加bom页面
@@ -175,6 +109,15 @@
     function admin_update_bom(bomId) {
         window.location.href= "${path}/admin/bom/to_update_bom?bomId="+bomId;
     }
+
+    /**
+     *跳转到详情页面
+     * @param employee
+     */
+    function admin_details_bom(bomId) {
+        window.location.href= "${path}/admin/bom/to_details_bom?bomId="+bomId;
+    }
+
 </script>
 </body>
 </html>

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/update_bom.ftl

@@ -44,7 +44,7 @@
         <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="${ptsBom.bomName}" id="bomName" name="bomName" placeholder="请输入1-30位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,30}$/" errormsg="请输入1-30位的名称,支持中文、字母、数字!">
+                <input type="text" class="input-text" value="${ptsBom.bomName}" id="bomName" name="bomName" placeholder="请输入1-20位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,20}$/" errormsg="请输入1-20位的名称,支持中文、字母、数字!">
             </div>
         </div>
 
@@ -148,7 +148,7 @@
             callback: function (data) {//异步回调函数
                 if (data) {
                     var index = layer.alert(data.resultMsg, function () {
-                        if (data.Success) {
+                        if (data.resultCode == 200 ) {
                             location.href = "${path}/admin/bom/_bom_list";
                         } else {
                             layer.close(index);

+ 36 - 0
wateroPF-common-core/src/main/java/com/iamberry/wechat/core/entity/machineNumber/MachineNumber.java

@@ -25,8 +25,44 @@ public class MachineNumber implements Serializable {
     private Date numberCreateTime;              //创建时间
     private Date numberSubTime;                 //关注时间
     private Integer numberIsPrint;              //是否打印
+    private Integer numberWatero;               //水质范围
+    private String numberProvince;              //省
+    private String numberCity;                  //市
+    private String numberDistrict;              //区
     private PageBean page = new PageBean();		//分页
 
+    public String getNumberProvince() {
+        return numberProvince;
+    }
+
+    public void setNumberProvince(String numberProvince) {
+        this.numberProvince = numberProvince;
+    }
+
+    public String getNumberCity() {
+        return numberCity;
+    }
+
+    public void setNumberCity(String numberCity) {
+        this.numberCity = numberCity;
+    }
+
+    public String getNumberDistrict() {
+        return numberDistrict;
+    }
+
+    public void setNumberDistrict(String numberDistrict) {
+        this.numberDistrict = numberDistrict;
+    }
+
+    public Integer getNumberWatero() {
+        return numberWatero;
+    }
+
+    public void setNumberWatero(Integer numberWatero) {
+        this.numberWatero = numberWatero;
+    }
+
     public PageBean getPage() {
         return page;
     }

+ 50 - 0
wateroPF-common-core/src/main/java/com/iamberry/wechat/core/entity/machineNumber/WarrantyCard.java

@@ -32,8 +32,58 @@ public class WarrantyCard implements Serializable {
 
     private String userEmail;   //邮箱
 
+    private Integer cardWatero; //水质范围
+
+    private String cardProvince;//省
+
+    private String cardCity;    //市
+
+    private String cardLocation;    //地址
+
+    private String cardDistrict;//区
+
     private PageBean page;      //分页信息
 
+    public String getCardLocation() {
+        return cardLocation;
+    }
+
+    public void setCardLocation(String cardLocation) {
+        this.cardLocation = cardLocation;
+    }
+
+    public Integer getCardWatero() {
+        return cardWatero;
+    }
+
+    public void setCardWatero(Integer cardWatero) {
+        this.cardWatero = cardWatero;
+    }
+
+    public String getCardProvince() {
+        return cardProvince;
+    }
+
+    public void setCardProvince(String cardProvince) {
+        this.cardProvince = cardProvince;
+    }
+
+    public String getCardCity() {
+        return cardCity;
+    }
+
+    public void setCardCity(String cardCity) {
+        this.cardCity = cardCity;
+    }
+
+    public String getCardDistrict() {
+        return cardDistrict;
+    }
+
+    public void setCardDistrict(String cardDistrict) {
+        this.cardDistrict = cardDistrict;
+    }
+
     public PageBean getPage() {
         return page;
     }

+ 9 - 3
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/machineNumberMapper.xml

@@ -35,7 +35,11 @@ PUBLIC
 		number_barcode cardBarcode,
 		number_sales_time cardSaleTime,
 		user_email userEmail,
-		user_name userName
+		user_name userName,
+		number_watero cardWatero,
+		number_province cardProvince,
+		number_city cardCity,
+		number_district cardDistrict
 	</sql>
 
 	<!-- 统计批次及已完成条数-->
@@ -250,13 +254,15 @@ PUBLIC
 		INSERT INTO tb_iamberry_user_machine_number
 		(
 			number_open_id,number_qrcode,number_barcode,number_batch,number_sales_time,
-			number_status,number_create_time,number_sub_time
+			number_status,number_create_time,number_sub_time,number_watero,
+			number_province,number_city,number_district
 		)
 		VALUES
 		<foreach collection="list" item="item" index="index" separator="," >
 			(
 			#{item.numberOpenId},#{item.numberQrcode},#{item.numberBarcode},#{item.numberBatch},
-			#{item.numberSalesTime},#{item.numberStatus},NOW(),NOW()
+			#{item.numberSalesTime},#{item.numberStatus},NOW(),NOW(),#{item.numberWatero},
+			#{item.numberProvince},#{item.numberCity},#{item.numberDistrict}
 			)
 		</foreach>
 	</insert>

+ 10 - 0
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/QrCodeHandler.java

@@ -325,6 +325,16 @@ public class QrCodeHandler {
         //添加质保结束时间和包换时间
         if (cardList != null && cardList.size() > 0) {
             for (WarrantyCard warrantyCard : cardList) {
+                StringBuilder location = new StringBuilder(warrantyCard.getCardProvince());
+                if (StringUtils.isNotEmpty(warrantyCard.getCardCity())) {
+                    location.append("-");
+                    location.append(warrantyCard.getCardCity());
+                }
+                if (StringUtils.isNotEmpty(warrantyCard.getCardDistrict())) {
+                    location.append("-");
+                    location.append(warrantyCard.getCardDistrict());
+                }
+                warrantyCard.setCardLocation(location.toString());
                 if (warrantyCard.getCardSaleTime() != null) {
                     warrantyCard.setCardEndTime(updateDate(warrantyCard.getCardSaleTime(),endRule.getRuleNum().intValue()));
                     warrantyCard.setCardRenewTime(updateDate(warrantyCard.getCardSaleTime(),renewRule.getRuleNum().intValue()));

+ 136 - 1
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/qrcode/MachineQrCodeHandler.java

@@ -1,17 +1,20 @@
 package com.iamberry.wechat.handles.qrcode;
 
+import com.iamberry.app.tool.util.HttpUtility;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.machineNumber.MachineNumber;
 import com.iamberry.wechat.core.entity.machineNumber.WarrantyCard;
 import com.iamberry.wechat.core.entity.member.Member;
-import com.iamberry.wechat.core.entity.wx.QRCJson;
 import com.iamberry.wechat.face.admin.SystemService;
 import com.iamberry.wechat.face.machineNumber.MachineNumberService;
 import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.face.order.CodeService;
 import com.iamberry.wechat.tools.*;
+import org.apache.commons.lang.StringUtils;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
@@ -22,7 +25,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.text.MessageFormat;
+import org.apache.http.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
@@ -268,6 +276,63 @@ public class MachineQrCodeHandler {
         return msg;
     }
 
+    @RequestMapping("/_add_warranty")
+    public void addWarrantyUI(HttpServletRequest request,HttpServletResponse res) throws ServletException, IOException {
+        Member memberInfo = WechatUtils.getUserBySession(request);
+        //查询用户信息
+        memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
+        if (memberInfo != null && memberInfo.getUserStatus() == 2) {
+            request.getRequestDispatcher("/view/add_machine.html").forward(request,res);
+        } else {
+            request.getRequestDispatcher("/view/guanzhu.html").forward(request,res);
+        }
+    }
+
+    /**
+     * 获取ip地址
+     * @param request
+     * @return
+     */
+    public static String getIp(HttpServletRequest request) {
+        String ip = request.getHeader("x-forwarded-for");
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+        // 获取ip地址, 若多级代理,第一个IP为客户端真实IP,多个IP按照','分割
+        if (ip != null && ip.indexOf(",") != -1) {
+            ip = ip.split(",")[0];
+        }
+        return ip;
+    }
+
+    /**
+     * 获取地址信息
+     * @param ip
+     * @return
+     */
+    public static Map<String,Object> getLocation(String ip) {
+        Map<String,Object> map = new HashMap<String,Object>();
+        try {
+            JSONObject json = new JSONObject(
+                    HttpUtility.httpsGet(MessageFormat.format(NameUtils.getConfig("SINA_IP_URL"),ip)));
+            String province = json.getString("province");
+            String city = json.getString("city");
+            String district = json.getString("district");
+            map.put("province",province);
+            map.put("city",city);
+            map.put("district",district);
+        } catch (ParseException | IOException | JSONException e) {
+            System.out.println("------------获取地址出错------------");
+        }
+        return map;
+    }
+
     /**
      * 发送手机验证码
      * @param request
@@ -297,6 +362,50 @@ public class MachineQrCodeHandler {
     }
 
     /**
+     * 根据经纬度通过腾讯地址位置
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping("/get_location_by_qq")
+    public ResultMsg getLocationByQq(HttpServletRequest request) throws Exception {
+        ResultMsg msg = new ResultMsg();
+        Map<String,Object> map = new HashMap<String,Object>();
+        //纬度
+        String latitude = request.getParameter("latitude");
+        //经度
+        String longitude = request.getParameter("longitude");
+        if (!StringUtils.isNotEmpty(latitude)) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("纬度不能为空!");
+            return msg;
+        }
+        if (!StringUtils.isNotEmpty(longitude)) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("经度不能为空!");
+            return msg;
+        }
+        JSONObject json = new JSONObject(
+                HttpUtility.httpsGet(MessageFormat.format(NameUtils.getConfig("LOCATION_QQ_URL"),latitude,longitude)));
+        JSONObject resultJson = json.getJSONObject("result");
+        JSONObject locationJson = resultJson.getJSONObject("ad_info");
+        String numberProvince = locationJson.getString("province");
+        String numberCity = locationJson.getString("city");
+        String numberDistrict = locationJson.getString("district");
+        System.out.println("locationJson="+locationJson);
+        map.put("numberProvince",numberProvince);
+        map.put("numberCity",numberCity);
+        map.put("numberDistrict",numberDistrict);
+        msg.setData(map);
+        msg.setResultCode(ResultInfo.SUCCESSCODE);
+        msg.setStatus(true);
+        return msg;
+    }
+
+    /**
      * 查询百胜订单信息
      * @param request
      * @param member
@@ -359,6 +468,11 @@ public class MachineQrCodeHandler {
     public ResultMsg addWarrantyCard(HttpServletRequest request, Member member) throws Exception {
         ResultMsg msg = new ResultMsg();
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String numberWatero = request.getParameter("numberWatero");
+        String numberProvince = request.getParameter("numberProvince");
+        String numberCity = request.getParameter("numberCity");
+        String numberDistrict = request.getParameter("numberDistrict");
+
         List<MachineNumber> list = new ArrayList<MachineNumber>();
         Member memberInfo = WechatUtils.getUserBySession(request);
         String txtTime = request.getParameter("txtTime");
@@ -372,6 +486,23 @@ public class MachineQrCodeHandler {
         }
         member.setUserId(memberInfo.getUserId());
 
+        if (!StringUtils.isNotEmpty(numberProvince)) {
+            String ip = getIp(request);
+            Map<String,Object> locations = getLocation(ip);
+            if (StringUtils.isNotEmpty((String)locations.get("province"))) {
+                numberProvince = (String)locations.get("province");
+                numberCity = (String)locations.get("city");
+                numberDistrict = (String)locations.get("district");
+            }
+        }
+
+        if (!StringUtils.isNotEmpty(numberWatero)) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("水质范围为空,请重新填写水质范围!");
+            return msg;
+        }
+
         //验证手机验证码是否正确
         ResponseJson code = codeService.validCode(member.getUserTel(),member.getPhoneCode());
         if (code.getReturnCode() != 200) {
@@ -389,6 +520,10 @@ public class MachineQrCodeHandler {
                 MachineNumber machineNumber = new MachineNumber();
                 machineNumber.setNumberOpenId(memberInfo.getUserOpenid());
                 machineNumber.setNumberSalesTime(format.parse(times[i]));
+                machineNumber.setNumberWatero(Integer.parseInt(numberWatero));
+                machineNumber.setNumberProvince(numberProvince);
+                machineNumber.setNumberCity(numberCity);
+                machineNumber.setNumberDistrict(numberDistrict);
                 list.add(machineNumber);
             }
         }

+ 17 - 5
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/statistics/OrderStatisticsHandler.java

@@ -41,6 +41,12 @@ public class OrderStatisticsHandler {
         return mv;
     }
 
+    /**
+     * 查询本周,上周,今年的统计数量
+     * @param request
+     * @return
+     * @throws Exception
+     */
     @ResponseBody
     @RequestMapping("/select_order_statistics")
     public ResultMsg selectOrderStatistics(HttpServletRequest request) throws Exception {
@@ -55,7 +61,7 @@ public class OrderStatisticsHandler {
         try {
             Collections.sort(listWeekNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
 
         //查询上周统计数据
@@ -66,14 +72,14 @@ public class OrderStatisticsHandler {
         try {
             Collections.sort(listLastWeekNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
         //封装一年的销售数据
         List<StatisticsSalesOrder> listYearNum = getYearList();
         try {
             Collections.sort(listYearNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
 
         map.put("listWeekNum",listWeekNum);
@@ -85,6 +91,12 @@ public class OrderStatisticsHandler {
         return msg;
     }
 
+    /**
+     * 按月查询统计数量
+     * @param request
+     * @return
+     * @throws Exception
+     */
     @ResponseBody
     @RequestMapping("/select_order_by_month")
     public ResultMsg selectOrderByMonth(HttpServletRequest request) throws Exception {
@@ -99,7 +111,7 @@ public class OrderStatisticsHandler {
         try {
             Collections.sort(listMonthNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
         msg.setData(listMonthNum);
         msg.setStatus(true);
@@ -113,6 +125,7 @@ public class OrderStatisticsHandler {
      * @return
      */
     public List<StatisticsSalesOrder> getMonthList(String month) throws Exception {
+        month = month + "-01";
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         StatisticsSalesOrder salesOrder = new StatisticsSalesOrder();
         salesOrder.setSalesDate(format.parse(month));
@@ -172,7 +185,6 @@ public class OrderStatisticsHandler {
                     }
                 }
                 if (flag) {
-                    System.out.println("weekDate="+weekDate[i]);
                     StatisticsSalesOrder salOrder = new StatisticsSalesOrder();
                     salOrder.setSalesBlackNum(0);
                     salOrder.setSalesBlueNum(0);

File diff suppressed because it is too large
+ 5 - 1
wateroPF-wechat-web/src/main/resources/platform.properties


+ 28 - 11
wateroPF-wechat-web/src/main/webapp/WEB-INF/views/admin/qrCode/warrantyCardList.jsp

@@ -47,24 +47,41 @@
         <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="60">质保卡号</th>
+                <th width="60">姓名</th>
                 <th width="100">邮箱</th>
-                <th width="100">购买日期</th>
-                <th width="100">换新截止日期</th>
-                <th width="100">十年质保日期</th>
+                <th width="60">水质范围</th>
+                <th width="100">地址</th>
+                <th width="60">购买日期</th>
+                <th width="60">换新截止日期</th>
+                <th width="60">十年质保日期</th>
             </tr>
             </thead>
             <tbody id="listid">
             <c:if test="${ !(empty cardList)}">
                 <c:forEach items="${cardList}" var="card">
                     <tr>
-                        <td class="text-c" width="100">${card.cardBarcode }</td>
-                        <td class="text-c" width="100">${card.userName }</td>
-                        <td class="text-c" width="100">${card.userEmail }</td>
-                        <td class="text-c" width="100"><fmt:formatDate value="${card.cardSaleTime }" pattern="yyyy-MM-dd" /></td>
-                        <td class="text-c" width="100"><fmt:formatDate value="${card.cardRenewTime }" pattern="yyyy-MM-dd" /></td>
-                        <td class="text-c" width="100"><fmt:formatDate value="${card.cardEndTime }" pattern="yyyy-MM-dd" /></td>
+                        <td class="text-c" width="60">${card.cardBarcode }</td>
+                        <td class="text-c" width="60">${card.userName }</td>
+                        <td class="text-c" width="60">${card.userEmail }</td>
+                        <td class="text-c" width="60">
+                            <c:if test="${card.cardWatero == 1 }">
+                                0-100 TDS
+                            </c:if>
+                            <c:if test="${card.cardWatero == 2 }">
+                                101-250 TDS
+                            </c:if>
+                            <c:if test="${card.cardWatero == 3 }">
+                                251-500 TDS
+                            </c:if>
+                            <c:if test="${card.cardWatero == 4 }">
+                                501 TDS 以上
+                            </c:if>
+                        </td>
+                        <td class="text-c" width="100">${card.cardLocation }</td>
+                        <td class="text-c" width="60"><fmt:formatDate value="${card.cardSaleTime }" pattern="yyyy-MM-dd" /></td>
+                        <td class="text-c" width="60"><fmt:formatDate value="${card.cardRenewTime }" pattern="yyyy-MM-dd" /></td>
+                        <td class="text-c" width="60"><fmt:formatDate value="${card.cardEndTime }" pattern="yyyy-MM-dd" /></td>
                     </tr>
                 </c:forEach>
             </c:if>

+ 24 - 27
wateroPF-wechat-web/src/main/webapp/WEB-INF/views/admin/statistics/salesStatistics.jsp

@@ -51,7 +51,7 @@
 	<div class="charts-box1">
 	<div id="container2" style="width:1045px;height:400px;display: inline-block;">
 	</div>
-	<input type="text" value="" placeholder="选择月份" class="select-date" onClick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d',onpicked:updateMonthList})" id="select-month" readonly="readonly"/>
+	<input type="text" value="" placeholder="选择月份" class="select-date" onClick="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM',maxDate:'%y-%M',minDate:'%y-01',onpicked:updateMonthList})" id="select-month" readonly="readonly"/>
 	<button type="button" class="my-btn" id="btn-3">查看饼状图</button>
 	</div>
 	
@@ -172,7 +172,7 @@
                 text: '共销售' + week_sum + '台机器'
             },
             tooltip: {
-                pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
             },
             plotOptions: {
                 pie: {
@@ -228,7 +228,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name:<b>{point.y:.1f}</b>}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -237,7 +237,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: '本周销量',
+                    name: '本周销量',
                     data: week_num,
                     color:'#fba62e'
                 }, {
@@ -268,7 +268,7 @@
                     text: '共销售' + week_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -321,7 +321,7 @@
                 }]
             },
             tooltip: {
-                pointFormat: '{series.name:<b>{point.y:.1f}</b>}'
+                pointFormat: '{point.y}台'
             },
             legend: {
                 layout: 'vertical',
@@ -330,7 +330,7 @@
                 borderWidth: 0
             },
             series: [{
-                name: '上周销量',
+                name: '上周销量',
                 data: last_week_num,
                 color:'#fba62e'
             }, {
@@ -367,7 +367,7 @@
                     text: '共销售' + last_week_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -418,7 +418,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name:<b>{point.y:.1f}</b>}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -427,7 +427,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: '本周销量',
+                    name: '本周销量',
                     data: last_week_num,
                     color:'#fba62e'
                 }, {
@@ -475,7 +475,7 @@
                 }]
             },
             tooltip: {
-                pointFormat: '{series.name}'
+                pointFormat: '{point.y}台'
             },
             legend: {
                 layout: 'vertical',
@@ -484,7 +484,7 @@
                 borderWidth: 0
             },
             series: [{
-                name: year + '年销量',
+                name: year + '年销量',
                 data: year_num,
                 color:'#fba62e'
             }, {
@@ -535,7 +535,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -544,7 +544,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: year + '年销量',
+                    name: year + '年销量',
                     data: year_num,
                     color:'#fba62e'
                 }, {
@@ -574,7 +574,7 @@
                     text: '共销售' + year_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -666,7 +666,7 @@
                 }]
             },
             tooltip: {
-                pointFormat: '{series.name}'
+                pointFormat: '{point.y}台'
             },
             legend: {
                 layout: 'vertical',
@@ -675,7 +675,7 @@
                 borderWidth: 0
             },
             series: [{
-                name: text_month + '月销量',
+                name: text_month + '月销量',
                 data: month_num,
                 color:'#fba62e'
             }, {
@@ -726,7 +726,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -735,7 +735,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: text_month + '月销量',
+                    name: text_month + '月销量',
                     data: month_num,
                     color:'#fba62e'
                 }, {
@@ -766,7 +766,7 @@
                     text: '共销售' + month_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -841,7 +841,7 @@
                             text: '共销售' + month_sum + '台机器'
                         },
                         tooltip: {
-                            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                            pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                         },
                         plotOptions: {
                             pie: {
@@ -891,7 +891,7 @@
                             }]
                         },
                         tooltip: {
-                            pointFormat: '{series.name}'
+                            pointFormat: '{point.y}台'
                         },
                         legend: {
                             layout: 'vertical',
@@ -900,7 +900,7 @@
                             borderWidth: 0
                         },
                         series: [{
-                            name: text_month + '月销量',
+                            name: text_month + '月销量',
                             data: month_num,
                             color:'#fba62e'
                         }, {
@@ -962,10 +962,7 @@ function valueDate(now) {
         if (month < 10) {
             month = '0' + month;
 		}
-		if (date < 10) {
-            date = '0' + date;
-        }
-        return   year+"-"+month+"-"+date;
+        return   year+"-"+month;
     }
 </script>
 </body>

+ 19 - 1
wateroPF-wechat-web/src/main/webapp/WEB-INF/views/wechat/clearing.html

@@ -87,6 +87,12 @@
 				</li>
 			</ul>
 		</div>
+		<!--国庆节弹窗开始-->
+		<div id="my-dalog" style="position: fixed;width: 100%;height: 100%;left: 0;top:0;text-align: center;display: none;background-color:rgba(0,0,0,.7);">
+			<img width="80%" src="//s.iamberry.com/wateroPF/new/images/shop/dalog-2017-10-01.png" />
+			<div style="padding-top: 10px;color: #fff;"><span class="iconfont icon-guanbi" id="btn-close"></span></div>
+		</div>
+		<!--国庆节弹窗结束-->
 		<script src="//s.iamberry.com/wateroPF/js/mui.min.js?v=2016111701"></script>
 		<script src="//s.iamberry.com/wateroPF/js/jquery-2.1.1.min.js"></script>
 		<script src="//s.iamberry.com/wateroPF/js/shop/main.js?v=2016111701"></script>
@@ -94,6 +100,18 @@
 		<script src="//s.iamberry.com/wateroPF/js/shop/layer.js"></script>
 		<!--<script src="//s.iamberry.com/wateroPF/js/shop/clearing.js?v=201612030009"></script>-->
 		<script src="//s.iamberry.com/wateroPF/new/js/page/clearing.js?v=201612030009"></script>
-
+	    <script>
+			var now=new Date();
+            var   month=now.getMonth()+1;
+            var   date=now.getDate();
+			if(month>8 && month<11){
+			    if((month==9 && date==30) || (month==10 && (date>0 && date<7))){
+			        $("#my-dalog").show();
+				}
+			}
+            mui('body').on('tap', '#btn-close', function() {
+                $("#my-dalog").hide();
+            });
+		</script>
 	</body>
 </html>

+ 1 - 1
wateroPF-wechat-web/src/main/webapp/WEB-INF/views/wechat/vip_center.html

@@ -131,7 +131,7 @@
 				<div class="iconfont icon-wodequanbao"></div>
 				我的券包
 			</a>
-			<a  id="myMachine" class="mui-control-item" href="/wateroPF/view/warranty_card.html">
+			<a  id="myMachine" class="mui-control-item" href="/wateroPF/wechat/qrcode/_add_warranty">
 				<div class="iconfont icon-zhi"></div>
 				质保卡
 			</a>

+ 346 - 323
wateroPF-wechat-web/src/main/webapp/view/add_machine.html

@@ -1,115 +1,119 @@
 <!DOCTYPE html>
 <html>
-	<head>
-		<meta charset="UTF-8">
-		<title>领取质保卡</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/css/mui.min.css?v=2017092601" />
-		<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/css/mui.picker.min.css?v=2017092601" />
-		<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/new/css/iconfont.css?v=2017092601" />
-		<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/css/style.css?v=2017092601" />
-		<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/new/css/personal_information.css?v=2017092601" />
-		<style>
-			h4{margin-top:5px;margin-bottom: 5px;font-size: 20px;}
-			.btn-pull-code{position: absolute;right: 10px;top:7px;height:34px;padding:0 6px;border-radius: 5px; line-height: 34px;font-size: 12px; color: #fff; background: #24cae9;}
-			.btn-pull-code .active{background: #c8c8c8;}
-			.icon-fuxuankuang a{color: #24cae9;}
-			.icon-yanse,.icon-youhui,.icon-fuxuankuang,.icon-jiage,.icon-songhuo{font-size: 15px;padding-left: 22px;}
-			.icon-yanse:before,.icon-fuxuankuang:before,.icon-youhui:before,.icon-jiage:before,.icon-songhuo:before{font-size: 18px;color: #24cae9;position: absolute;left: 0;width: 20px;height: 18px;}
-			.try_price{color: #f1436c;}
-			.ul_radio{width: 100%;}
-			.ul_radio li{width:21%;height: 55px;margin: 0 1%;border: 1px solid rgba(0,0,0,.1);border-radius: 5px; display: inline-block;position: relative;font-family:"iconfont" !important;font-style:normal;-webkit-font-smoothing: antialiased;}
-			.ul_radio .active:after{position: absolute;right: 0;bottom: 0;content: "\e66f";color: #f1436c;line-height: 1;font-size: 20px;}
+<head>
+	<meta charset="UTF-8">
+	<title>领取质保卡</title>
+	<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
+	<meta name="apple-mobile-web-app-capable" content="yes">
+	<meta name="apple-mobile-web-app-status-bar-style" content="black">
+	<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/css/mui.min.css?v=2017092601" />
+	<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/css/mui.picker.min.css?v=2017092601" />
+	<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/new/css/iconfont.css?v=2017092601" />
+	<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/css/style.css?v=2017092601" />
+	<link rel="stylesheet" type="text/css" href="//s.iamberry.com/wateroPF/new/css/personal_information.css?v=2017092601" />
+	<style>
+		h4{margin-top:5px;margin-bottom: 5px;font-size: 20px;}
+		.btn-pull-code{position: absolute;right: 10px;top:7px;height:34px;padding:0 6px;border-radius: 5px; line-height: 34px;font-size: 12px; color: #fff; background: #24cae9;}
+		.btn-pull-code .active{background: #c8c8c8;}
+		.icon-fuxuankuang a{color: #24cae9;}
+		.icon-yanse,.icon-youhui,.icon-fuxuankuang,.icon-jiage,.icon-songhuo{font-size: 15px;padding-left: 22px;}
+		.icon-yanse:before,.icon-fuxuankuang:before,.icon-youhui:before,.icon-jiage:before,.icon-songhuo:before{font-size: 18px;color: #24cae9;position: absolute;left: 0;width: 20px;height: 18px;}
+		.try_price{color: #f1436c;}
+		.ul_radio{width: 100%;}
+		.ul_radio li{width:21%;height: 55px;margin: 0 1%;border: 1px solid rgba(0,0,0,.1);border-radius: 5px; display: inline-block;position: relative;font-family:"iconfont" !important;font-style:normal;-webkit-font-smoothing: antialiased;}
+		.ul_radio .active:after{position: absolute;right: 0;bottom: 0;content: "\e66f";color: #f1436c;line-height: 1;font-size: 20px;}
 
-			.head-img {position: absolute;bottom: 15px;right: 13px;width: 60px;height: 60px;border-radius: 30px;border: 3px solid #E5E5E5;}
-			.mui-table-view .mui-media .mui-media-body{height: 41px;line-height: 41px;color: #333;}
-			.mui-table-view .mui-media .mui-media-body>span{color: #f1436c;}
-			.my-table-view-try{border-top: .6em solid #f0f0f0;border-bottom: .6em solid #f0f0f0;padding-bottom: 10px;}
-			.my-table-view-try .mui-table-view-cell{padding:10px 13px 10px 30px !important;font-size: 12px;}
-			.mui-table-view-cell:after,.mui-table-view:before,.mui-table-view:after,.mui-input-group .mui-input-row:after,.mui-input-group:before,.mui-input-group:after{display: none;}
-			.mui-table-view-cell>a:not(.mui-btn){color: #666;margin: -15px -15px;}
-			.mui-table-view-cell>a .mui-pull-right{color: #999;font-size: 14px;}
-			#btn_submit{color: #fff;padding: 10px 0;font-size: 18px;background: #24cae9;width: 70%;margin:40px auto 0 auto;}
-			.mui-btn-block.mui-active,.btn-pull-code.mui-active{background-color: #c8c8c8 !important;}
-			.icon-fuxuankuang.mui-active:before{color: #c8c8c8;}
-			.mui-content-padded{margin: 10px 13px;}
-			.tips{padding: 25px 10px;background: #36a4c6;text-align: center;color: #fff;}
-			.mui-input-group .mui-input-row {height: 50px;padding: 5px 0;border: 1px solid rgba(0,0,0,.1); margin:10px 0;}
-			.mui-input-row label{color: #666;width:27%;font-size: 15px;}
-			.mui-input-row label~input{width:73%;}
-			.mui-input-row label~input::-webkit-input-placeholder{font-size: 15px;}
-			.triangle-down {width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;}
-			.my-arrowright{position: absolute;right: 18px;top: 28px;color: #666;pointer-events:none;}
-			.mui-btn-red{background-color: #e9004c;}
-			.icon-saoma{position: absolute;right: 0;top:0;padding: 12px;color: #55c0dc;}
-			.mui-icon-arrowdown{position: absolute;right: 0;top:0;padding: 12px;color: #999;pointer-events: none;}
-		</style>
-	</head>
-	<body style="background: #fff;">
-	<div class="loading-bg">
-			<div class="mui-loading">
-				<div class="mui-spinner">
-				</div>
-				&nbsp;&nbsp;加载中...
-			</div>
+		.head-img {position: absolute;bottom: 15px;right: 13px;width: 60px;height: 60px;border-radius: 30px;border: 3px solid #E5E5E5;}
+		.mui-table-view .mui-media .mui-media-body{height: 41px;line-height: 41px;color: #333;}
+		.mui-table-view .mui-media .mui-media-body>span{color: #f1436c;}
+		.my-table-view-try{border-top: .6em solid #f0f0f0;border-bottom: .6em solid #f0f0f0;padding-bottom: 10px;}
+		.my-table-view-try .mui-table-view-cell{padding:10px 13px 10px 30px !important;font-size: 12px;}
+		.mui-table-view-cell:after,.mui-table-view:before,.mui-table-view:after,.mui-input-group .mui-input-row:after,.mui-input-group:before,.mui-input-group:after{display: none;}
+		.mui-table-view-cell>a:not(.mui-btn){color: #666;margin: -15px -15px;}
+		.mui-table-view-cell>a .mui-pull-right{color: #999;font-size: 14px;}
+		#btn_submit{color: #fff;padding: 10px 0;font-size: 18px;background: #24cae9;width: 70%;margin:40px auto 0 auto;}
+		.mui-btn-block.mui-active,.btn-pull-code.mui-active{background-color: #c8c8c8 !important;}
+		.icon-fuxuankuang.mui-active:before{color: #c8c8c8;}
+		.mui-content-padded{margin: 10px 13px;}
+		.tips{padding: 25px 10px;background: #36a4c6;text-align: center;color: #fff;}
+		.mui-input-group .mui-input-row {height: 50px;padding: 5px 0;border: 1px solid rgba(0,0,0,.1); margin:10px 0;}
+		.mui-input-row label{color: #666;width:27%;font-size: 15px;}
+		.mui-input-row label~input{width:73%;}
+		.mui-input-row label~input::-webkit-input-placeholder{font-size: 15px;}
+		.triangle-down {width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;}
+		.my-arrowright{position: absolute;right: 18px;top: 28px;color: #666;pointer-events:none;}
+		.mui-btn-red{background-color: #e9004c;}
+		.icon-saoma{position: absolute;right: 0;top:0;padding: 12px;color: #55c0dc;}
+		.mui-icon-arrowdown{position: absolute;right: 0;top:0;padding: 12px;color: #999;pointer-events: none;}
+	</style>
+</head>
+<body style="background: #fff;">
+<div class="loading-bg">
+	<div class="mui-loading">
+		<div class="mui-spinner">
+		</div>
+		&nbsp;&nbsp;加载中...
 	</div>
+</div>
 
-					<div class="mui-content" style="background: #fff;">
-				<div class="tips more">
-					<h4>现在完善机器信息!</h4>
-					<span>尊享WaterO全面服务保障</span>
-					<div></div>
-				</div>
-				<div class="mui-content-padded">
-					<div><span class="iconfont icon-dingwei" style="color: #f00;"></span>地址:<span id="wx-ads"></span></div>
-				<form class="mui-input-group">
-					<div class="mui-input-row">
-						<label>您的姓名</label>
-						<input type="text" maxlength="12" class="mui-input-clear" placeholder="请填写您的姓名" id="ipt-name">
-					</div>
-					<div class="mui-input-row">
-						<label>您的邮箱</label>
-						<input type="text" maxlength="32" class="mui-input-clear" placeholder="请填写您的邮箱" id="ipt-email">
-					</div>
-					<div class="mui-input-row">
-						<label>水质范围</label>
-						<input type="text"  placeholder="请选择您的水质范围" id="ipt-water" txtvalue="" readonly="readonly">
-					</div>
-					<div class="mui-input-row">
-						<label>手机号码</label>
-						<input type="tel" maxlength="11" class="mui-input-clear" placeholder="请填写物流发货时预留的手机号" id="ipt-phone">
-					</div>
-					<div class="mui-input-row">
-						<label>验&nbsp;&nbsp;证&nbsp;&nbsp;码</label>
-						<input type="text" maxlength="4" placeholder="请输入验证码" id="ipt-code">
-						<span class="btn-pull-code" id="pull-code">获取验证码</span>
-					</div>
-					<div class="">
-						<label style="color: red;"><b>*注意:</b><label id="txt_message">请填写与您物流信息相符的联系电话,否则将会无法识别您的产品信息</label></label>
-					</div>
-
-				</form>
-				</div>
-				<div class="mui-content-padded">
-					<button type="button" data-loading-icon="mui-spinner mui-spinner-custom" data-loading-text="提交中" class="mui-btn mui-btn-block mui-btn-outlined mui-active" id="btn_submit" disabled="disabled" >提交</button>
-				</div>
+<div class="mui-content" style="background: #fff;">
+	<div class="tips more">
+		<h4>现在完善机器信息!</h4>
+		<span>尊享WaterO全面服务保障</span>
+		<div></div>
+	</div>
+	<div class="mui-content-padded">
+		<div><span class="iconfont icon-dingwei" style="color: #f00;"></span>地址:<span id="wx-ads"></span></div>
+		<form class="mui-input-group">
+			<div class="mui-input-row">
+				<label>姓名</label>
+				<input type="text" maxlength="12" class="mui-input-clear" placeholder="请填写您的姓名" id="ipt-name">
+			</div>
+			<div class="mui-input-row">
+				<label>邮箱</label>
+				<input type="text" maxlength="32" class="mui-input-clear" placeholder="请填写您的邮箱" id="ipt-email">
+			</div>
+			<div class="mui-input-row">
+				<label>水质</label>
+				<input type="text"  placeholder="请选择您的水质范围" id="ipt-water" txtvalue="" readonly="readonly">
+			</div>
+			<div class="mui-input-row">
+				<label>手机号</label>
+				<input type="tel" maxlength="11" class="mui-input-clear" placeholder="请填写物流发货时预留的手机号" id="ipt-phone">
+			</div>
+			<div class="mui-input-row">
+				<label>验&nbsp;&nbsp;证&nbsp;&nbsp;码</label>
+				<input type="text" maxlength="4" placeholder="请输入验证码" id="ipt-code">
+				<span class="btn-pull-code" id="pull-code">获取验证码</span>
 			</div>
+			<div id="div_message" style="display: none;">
+				<label style="color: red;"><b>*注意:</b><label id="txt_message">请填写与您物流信息相符的联系电话,否则将会无法识别您的产品信息</label></label>
+			</div>
+
+		</form>
+	</div>
+	<div class="mui-content-padded">
+		<button type="button" data-loading-icon="mui-spinner mui-spinner-custom" data-loading-text="提交中" class="mui-btn mui-btn-block mui-btn-outlined mui-active" id="btn_submit" disabled="disabled" >提交</button>
+	</div>
+</div>
 
-	<script src="//s.iamberry.com/wateroPF/js/mui.min.js?v=2016101701"></script>
-	<script src="//s.iamberry.com/wateroPF/js/mui.picker.min.js"></script>
-	<script src="//s.iamberry.com/wateroPF/js/jquery-2.1.1.min.js"></script>
-	<script src="//s.iamberry.com/wateroPF/js/shop/main.js?v=2016101701"></script>
-	<script src="//s.iamberry.com/wateroPF/js/shop/wechat-utils-1.0.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/mui.min.js?v=2016101701"></script>
+<script src="//s.iamberry.com/wateroPF/js/mui.picker.min.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/jquery-2.1.1.min.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/shop/main.js?v=2016101701"></script>
+<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/shop/wechat-utils-1.0.js"></script>
 <script type="text/javascript">
 
-	var check = false,alert_msg='';
-	var mobile=/^(13|14|15|18)[0-9]{9}$/; //手机号码
-	var uname = /^[\u4e00-\u9fa5a-zA-Z]{1,12}$/; //中文英文
+    var check = false,alert_msg='';
+    var mobile=/^(13|14|15|18)[0-9]{9}$/; //手机号码
+    var uname = /^[\u4e00-\u9fa5a-zA-Z]{1,12}$/; //中文英文
     var email=/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,18}$/;
-	var code = /^[0-9]{4}$/; //数字
-	mui.ready(function(){
+    var code = /^[0-9]{4}$/; //数字
+    var numberProvince = null;
+    var numberCity = null;
+    var numberDistrict = null;
+    mui.ready(function(){
         //选择示例
         var userPicker = new mui.PopPicker();
         userPicker.setData([{
@@ -117,10 +121,10 @@
             text: '0-100 TDS'
         }, {
             value: '2',
-            text: '101-300 TDS'
+            text: '101-250 TDS'
         }, {
             value: '3',
-            text: '301-500 TDS'
+            text: '251-500 TDS'
         }, {
             value: '4',
             text: '501 TDS 以上 '
@@ -130,64 +134,80 @@
             userPicker.show(function(items) {
                 document.getElementById('ipt-water').value = items[0].text;
                 $('#ipt-water').attr('txtvalue',items[0].value);
-                //返回 false 可以阻止选择框的关闭
-                //return false;
+                var txt_message = '';
+                switch (items[0].value) {
+                    case '1':
+                        txt_message = '您家水质良好。';
+                        break;
+                    case '2':
+                        txt_message = '您家水质偏差,WaterO可彻底净化,请使用柠檬酸每3个月清洗。';
+                        break;
+                    case '3':
+                        txt_message = '您家水质较差,WaterO可彻底净化,请使用柠檬酸每2个月清洗。';
+                        break;
+                    case '4':
+                        txt_message = '您家水质很差,WaterO可彻底净化,请使用柠檬酸每1个月清洗。';
+                        break;
+                }
+                $('#txt_message').html(txt_message);
+                $('#div_message').show();
             });
         }, false);
-
-
-		document.querySelector('.loading-bg').style.display='none';
-	});
-window.onload=function(){
-    wx.getLocation({
-        type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
-        success: function (res) {
-            var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
-            var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
-            var speed = res.speed; // 速度,以米/每秒计
-            var accuracy = res.accuracy; // 位置精度
-            getLocation(latitude,longitude);
-        },
-        cancel: function (res) {
-            mui.alert('用户拒绝授权获取地理位置');
-        }
+        document.querySelector('.loading-bg').style.display='none';
     });
-};
-function getLocation(latitude,longitude){
-    $.ajax({
-        type: 'get',
-        url: 'http://apis.map.qq.com/ws/geocoder/v1/',
-        data:{
-            "location" : latitude+","+longitude,
-			"coord_type":1,
-			"key":'NDABZ-4NBR6-EC2SH-MUIX3-CDL6E-IJB7C',
-			"get_poi":0
-        },
-        dataType: 'json',
-        timeout: 15000,
-        success: function(dt) {
-            console.log(dt);
-            if(dt.status==0){
-                $("#wx-ads").text(dt.result.ad_info.province+"-"+dt.result.ad_info.city+"-"+dt.result.ad_info.district);
-			}
-        },
-        error: function(xhr, type, errorThrown) {
-            console.log("请检查网络或刷新页面重试!");
-        }
+
+    wx.ready(function () {
+        // 7.2 获取当前地理位置
+        wx.getLocation({
+            success: function (res) {
+                var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
+                var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
+                var speed = res.speed; // 速度,以米/每秒计
+                var accuracy = res.accuracy; // 位置精度
+                getlocation(latitude,longitude);
+            },
+            cancel: function (res) {
+                $("#wx-ads").text('定位失败');
+            }
+        });
     });
-}
-	mui('body').on('tap', '#btn_submit', function() {
-		change_input();
-		if(check){
-			console.log("提交");
-			mui(this).button('loading');
-			setTimeout(function() {
-        mui(this).button('reset');
-    }.bind(this), 2000);
-			//mui.alert("本批watero试用机为新机,请您在试用过程中足够爱惜,切勿刮划机身及损坏包装,感谢您的配合!");
-			var data_array = {
-				"userTel":$('#ipt-phone').val()
-			};
+
+    function getlocation(latitude,longitude){
+        var data_array = {
+            "latitude":latitude,
+			"longitude":longitude
+        };
+        $.ajax({
+            type: 'get',
+            url: base_path + '/qrcode/get_location_by_qq',
+			data:data_array,
+            dataType: 'json',
+            timeout: 15000,
+            success: function(dt) {
+                if(dt.status){
+                    numberProvince = dt.data.numberProvince;
+                    numberCity = dt.data.numberCity;
+                    numberDistrict = dt.data.numberDistrict;
+                    $("#wx-ads").text(numberProvince+"-"+numberCity+"-"+numberDistrict);
+                }
+            },
+            error: function(xhr, type, errorThrown) {
+                console.log("请检查网络或刷新页面重试!");
+            }
+        });
+    }
+    mui('body').on('tap', '#btn_submit', function() {
+        change_input();
+        if(check){
+            console.log("提交");
+            mui(this).button('loading');
+            setTimeout(function() {
+                mui(this).button('reset');
+            }.bind(this), 2000);
+            //mui.alert("本批watero试用机为新机,请您在试用过程中足够爱惜,切勿刮划机身及损坏包装,感谢您的配合!");
+            var data_array = {
+                "userTel":$('#ipt-phone').val()
+            };
             $.ajax({
                 type: 'post',
                 url: base_path + '/qrcode/select_efast_order_num',
@@ -201,10 +221,10 @@ function getLocation(latitude,longitude){
                         var text = '';
                         if (dt.data.num > 0) {
                             text = '您有'+ dt.data.num + '个订单,是否确认领取质保卡?';
-						} else {
+                        } else {
                             mui.alert('未搜索到订单,请确认后提交,如有疑问,请联系公众号客服!');
                             return;
-						}
+                        }
                         var btnArray = ['否', '是'];
                         mui.confirm(text, '提示', btnArray, function(e) {
                             if (e.index == 1) {
@@ -213,7 +233,10 @@ function getLocation(latitude,longitude){
                                     "userName":$('#ipt-name').val(),
                                     "userTel":$('#ipt-phone').val(),
                                     "userEmail":$('#ipt-email').val(),
-									"numberWatero":$('#ipt-water').attr('txtvalue'),
+                                    "numberWatero":$('#ipt-water').attr('txtvalue'),
+                                    "numberProvince":numberProvince,
+                                    "numberCity":numberCity,
+                                    "numberDistrict":numberDistrict,
                                     "txtTime":txtTime
                                 };
                                 $.ajax({
@@ -245,174 +268,174 @@ function getLocation(latitude,longitude){
                     mui.alert("请检查网络或刷新页面重试!");
                 }
             });
-		}else{
-			console.log("未通过");
-			mui.alert(alert_msg);
-		}
-	});
-	mui('body').on('tap', '#xieyi-dalog', function() {
-		mui.openWindow({
-			url: 'try_xieyi.html'
-		});
-	});
-$(".ul_radio li").each(function() {
-	$(this).on("click", function() {
-		$(this).addClass("active");
-		$(this).siblings().removeClass("active");
-	});
-});
-$(document).on('tap', '#btn-tongyi', function() {
-	var btn_submit=$("#btn_submit");
-	console.log($(this).hasClass("mui-active"));
-	if($(this).hasClass("mui-active")){
-		$(this).removeClass("mui-active");
-		btn_submit.removeClass("mui-active");
-	}else{
-		$(this).addClass("mui-active");
-		btn_submit.addClass("mui-active");
-	}
-});
-$(document).on('tap', '#pull-code', function() {
-	if($("#ipt-phone").val().trim()=="" &&(!$("#pull-code").hasClass("mui-active"))){
-		mui.alert("请填写手机号码");
-		return;
-	}else{
-		if(!mobile.test($("#ipt-phone").val().trim())){
-			mui.alert("手机号码不正确,请重新填写");
-			return;
-		}else{
-			if($(this).hasClass("mui-active")){
-				mui.alert();
-				return;
-			}else{
-				$(this).addClass("mui-active");
-                $('#btn_submit').removeClass("mui-active");
-                $('#btn_submit').removeAttr("disabled");
-				settime("pull-code");
-                $.ajax({
-                    type: 'post',
-                    url: base_path + '/qrcode/send_phone_code',
-					data:{
-                        "phone" : $("#ipt-phone").val()
-                    },
-                    dataType: 'json',
-                    timeout: 15000,
-                    success: function(dt) {
-                    },
-                    error: function(xhr, type, errorThrown) {
-                        mui.alert("请检查网络或刷新页面重试!");
-                    }
-                });
-			}
-		}
-	}
-});
-var countdown=60; 
-function settime(val) { 
-pullid=dc(val);
-if (countdown == 0) { 
-pullid.removeAttribute("disabled");
-pullid.className='btn-pull-code';
-pullid.innerText="获取验证码"; 
-countdown = 60; 
-return false;
-} else { 
-pullid.setAttribute("disabled", true); 
-pullid.className='btn-pull-code mui-active';
-pullid.innerText="重新发送(" + countdown + ")"; 
-countdown--; 
-} 
-setTimeout(function() { 
-settime(val) 
-},1000) 
-} 
-function change_input() {
-    //活动暂时结束   下次开启时注释这段代码就好了
-    /*alert_msg="活动已暂停,开始时间请联系客服";
-    check=false;
-    return false;*/
+        }else{
+            console.log("未通过");
+            mui.alert(alert_msg);
+        }
+    });
+    mui('body').on('tap', '#xieyi-dalog', function() {
+        mui.openWindow({
+            url: 'try_xieyi.html'
+        });
+    });
+    $(".ul_radio li").each(function() {
+        $(this).on("click", function() {
+            $(this).addClass("active");
+            $(this).siblings().removeClass("active");
+        });
+    });
+    $(document).on('tap', '#btn-tongyi', function() {
+        var btn_submit=$("#btn_submit");
+        console.log($(this).hasClass("mui-active"));
+        if($(this).hasClass("mui-active")){
+            $(this).removeClass("mui-active");
+            btn_submit.removeClass("mui-active");
+        }else{
+            $(this).addClass("mui-active");
+            btn_submit.addClass("mui-active");
+        }
+    });
+    $(document).on('tap', '#pull-code', function() {
+        if($("#ipt-phone").val().trim()=="" &&(!$("#pull-code").hasClass("mui-active"))){
+            mui.alert("请填写手机号码");
+            return;
+        }else{
+            if(!mobile.test($("#ipt-phone").val().trim())){
+                mui.alert("手机号码不正确,请重新填写");
+                return;
+            }else{
+                if($(this).hasClass("mui-active")){
+                    mui.alert();
+                    return;
+                }else{
+                    $(this).addClass("mui-active");
+                    $('#btn_submit').removeClass("mui-active");
+                    $('#btn_submit').removeAttr("disabled");
+                    settime("pull-code");
+                    $.ajax({
+                        type: 'post',
+                        url: base_path + '/qrcode/send_phone_code',
+                        data:{
+                            "phone" : $("#ipt-phone").val()
+                        },
+                        dataType: 'json',
+                        timeout: 15000,
+                        success: function(dt) {
+                        },
+                        error: function(xhr, type, errorThrown) {
+                            mui.alert("请检查网络或刷新页面重试!");
+                        }
+                    });
+                }
+            }
+        }
+    });
+    var countdown=60;
+    function settime(val) {
+        pullid=dc(val);
+        if (countdown == 0) {
+            pullid.removeAttribute("disabled");
+            pullid.className='btn-pull-code';
+            pullid.innerText="获取验证码";
+            countdown = 60;
+            return false;
+        } else {
+            pullid.setAttribute("disabled", true);
+            pullid.className='btn-pull-code mui-active';
+            pullid.innerText="重新发送(" + countdown + ")";
+            countdown--;
+        }
+        setTimeout(function() {
+            settime(val)
+        },1000)
+    }
+    function change_input() {
+        //活动暂时结束   下次开启时注释这段代码就好了
+		/*alert_msg="活动已暂停,开始时间请联系客服";
+		 check=false;
+		 return false;*/
 
 
-	$(".mui-input-group input").each(function(index) {
-		switch ($(this).attr("id")){
-			case "ipt-name":
-			if($(this).val().trim()==""){
-				alert_msg="请填写姓名";
-				check=false;
-				return false;
-			}else{
-				if(uname.test($(this).val())) {
-					check=true;
-				}else{
-					alert_msg="姓名格式不正确,请重新填写";
-					check=false;
-					return false;
-				}
-			}
-				break;
-            case "ipt-email":
-                if($(this).val().trim()==""){
-                    alert_msg="请填写您的邮箱";
-                    check=false;
-                    return false;
-                }else{
-                    if(email.test($(this).val())) {
-                        check=true;
+        $(".mui-input-group input").each(function(index) {
+            switch ($(this).attr("id")){
+                case "ipt-name":
+                    if($(this).val().trim()==""){
+                        alert_msg="请填写姓名";
+                        check=false;
+                        return false;
                     }else{
-                        alert_msg="邮箱格式不正确,请重新填写";
+                        if(uname.test($(this).val())) {
+                            check=true;
+                        }else{
+                            alert_msg="姓名格式不正确,请重新填写";
+                            check=false;
+                            return false;
+                        }
+                    }
+                    break;
+                case "ipt-email":
+                    if($(this).val().trim()==""){
+                        alert_msg="请填写您的邮箱";
                         check=false;
                         return false;
+                    }else{
+                        if(email.test($(this).val())) {
+                            check=true;
+                        }else{
+                            alert_msg="邮箱格式不正确,请重新填写";
+                            check=false;
+                            return false;
+                        }
                     }
-                }
-                break;
-			case "ipt-phone":
-			if($(this).val().trim()==""){
-				alert_msg="请填写手机号";
-				check=false;
-				return false;
-			}else{
-				if(mobile.test($(this).val().trim())) {
-					check=true;
-				}else{
-					alert_msg="手机号码不正确,请重新填写";
-					check=false;
-					return false;
-				}
-			}
-				break;
-			case "ipt-code":
-			if($(this).val().trim()==""){
-				alert_msg="请填写验证码";
-				check=false;
-				return false;
-			}else{
-				if(code.test($(this).val().trim())) {
-					check=true;
-				}else{
-					alert_msg="验证码格式不正确,请重新填写";
-					check=false;
-					return false;
-				}
-			}
-				break;
-			default:
-				break;
-		}
-	});
-	var btn_submit = dc('btn_submit');
-	if(check) {
-		console.log("通过")
-	} else {
-		console.log(alert_msg);
-	}
-}
+                    break;
+                case "ipt-phone":
+                    if($(this).val().trim()==""){
+                        alert_msg="请填写手机号";
+                        check=false;
+                        return false;
+                    }else{
+                        if(mobile.test($(this).val().trim())) {
+                            check=true;
+                        }else{
+                            alert_msg="手机号码不正确,请重新填写";
+                            check=false;
+                            return false;
+                        }
+                    }
+                    break;
+                case "ipt-code":
+                    if($(this).val().trim()==""){
+                        alert_msg="请填写验证码";
+                        check=false;
+                        return false;
+                    }else{
+                        if(code.test($(this).val().trim())) {
+                            check=true;
+                        }else{
+                            alert_msg="验证码格式不正确,请重新填写";
+                            check=false;
+                            return false;
+                        }
+                    }
+                    break;
+                default:
+                    break;
+            }
+        });
+        var btn_submit = dc('btn_submit');
+        if(check) {
+            console.log("通过")
+        } else {
+            console.log(alert_msg);
+        }
+    }
 
 
-var flag = false;
-var mask = mui.createMask(function() {
-	return flag;
-	}); //callback为用户点击蒙版时自动执行的回调;
-	 mui('body').on('tap', '#ipt-date', function() {
+    var flag = false;
+    var mask = mui.createMask(function() {
+        return flag;
+    }); //callback为用户点击蒙版时自动执行的回调;
+    mui('body').on('tap', '#ipt-date', function() {
         var th = this;
         var picker = new mui.DtPicker({
             type: "date", //设置日历初始视图模式
@@ -425,6 +448,6 @@ var mask = mui.createMask(function() {
             picker.dispose();
         });
     });
-	</script>
-	</body>
+</script>
+</body>
 </html>

+ 2 - 2
wateroPF-wechat-web/src/main/webapp/view/guanzhu.html

@@ -2,7 +2,7 @@
 <html>
 	<head>
 		<meta charset="UTF-8">
-		<title>爱贝源</title>
+		<title>关注公众号</title>
 		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
 		<meta name="apple-mobile-web-app-capable" content="yes">
 		<meta name="apple-mobile-web-app-status-bar-style" content="black">
@@ -45,7 +45,7 @@
 				</div>
 				<div class="mui-content-padded mui-text-center">
 					<div id="qrcode-div" style="padding: 20px 0;">
-						<img width="40%" src="http://s.iamberry.com/wateroPF/images/system_qrcode.jpg" />
+						<img width="40%" src="//s.iamberry.com/wateroPF/images/system_qrcode.jpg" />
 						<p>长按识别二维码关注</p>
 					</div>
 					<ul type="1" class="mui-text-left my-ol">