소스 검색

仓储管理

liujiankang 7 년 전
부모
커밋
e7767b0e05

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

@@ -29,4 +29,9 @@ public interface AwaitingSignclosedProductInfoService {
      * @return
      */
     int updateById(AwaitingSignclosedProductInfo record);
+
+    /**
+     * 根据签收id获取多个待签收产品
+     */
+    List<AwaitingSignclosedProductInfo> listBySignclosedId(Integer signclosedId);
 }

+ 3 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedInfoService.java

@@ -30,7 +30,9 @@ public interface ComplaintSignclosedInfoService {
      * 修改单个签收记录
      * @return
      */
-    int updateSignclosedById(ComplaintSignclosedInfo record);
+    boolean updateSignclosedById(ComplaintSignclosedInfo record,
+                             Map<String,Integer> alreadyColorMap,
+                             Map<String,Integer> alreadyFittingsMap);
 
     /**
      * 增加催促次数

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

@@ -32,4 +32,9 @@ public class AwaitingSignclosedProductInfoServiceImpl implements AwaitingSignclo
     public int updateById(AwaitingSignclosedProductInfo record) {
         return awaitingSignclosedProductMapper.updateById(record);
     }
+
+    @Override
+    public List<AwaitingSignclosedProductInfo> listBySignclosedId(Integer signclosedId) {
+        return awaitingSignclosedProductMapper.listBySignclosedId(signclosedId);
+    }
 }

+ 51 - 7
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedInfoServiceImpl.java

@@ -74,8 +74,8 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
                     awaitingSignclosedInfo.setProductName(fittingsInfo.getFittingsName());
                     awaitingSignclosedInfo.setProductNum(entry.getValue());
                     awaitingSignclosedInfo.setSignclosedProductType(2);
-                    awaitingSignclosedInfo.setSignclosedProductId(fittingsInfo.getProductId());
-                    awaitingSignclosedInfo.setSignclosedProductColor(Integer.valueOf(entry.getKey()));
+                    awaitingSignclosedInfo.setSignclosedProductId(fittingsInfo.getFittingsId());
+                    awaitingSignclosedInfo.setSignclosedProductColor(null);
                     awaitingSignclosedInfo.setSignclosedCreateTime(new Date());
                     awaitingSignclosedProductMapper.insert(awaitingSignclosedInfo);
                 }
@@ -110,8 +110,8 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
                     signclosedProductInfo.setProductName(fittingsInfo.getFittingsName());
                     signclosedProductInfo.setProductNum(entry.getValue());
                     signclosedProductInfo.setSignclosedProductType(2);
-                    signclosedProductInfo.setSignclosedProductId(fittingsInfo.getProductId());
-                    signclosedProductInfo.setSignclosedProductColor(Integer.valueOf(entry.getKey()));
+                    signclosedProductInfo.setSignclosedProductId(fittingsInfo.getFittingsId());
+                    signclosedProductInfo.setSignclosedProductColor(null);
                     signclosedProductInfo.setSignclosedCreateTime(new Date());
                     complaintSignclosedProductInfoMapper.insert(signclosedProductInfo);
                 }
@@ -146,10 +146,54 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
     public ComplaintSignclosedInfo getSignclosedById(Integer signclosedId) {
         return complaintSignclosedInfoMapper.getSignclosedById(signclosedId);
     }
-
+    @Transactional
     @Override
-    public int updateSignclosedById(ComplaintSignclosedInfo record) {
-        return complaintSignclosedInfoMapper.updateSignclosedById(record);
+    public boolean updateSignclosedById(ComplaintSignclosedInfo record,
+                                    Map<String,Integer> alreadyColorMap,
+                                    Map<String,Integer> alreadyFittingsMap) {
+        boolean msg = true;
+        int num = complaintSignclosedInfoMapper.updateSignclosedById(record);
+        if(num < 1){
+            msg = false;
+        }else{
+            if(alreadyColorMap != null || alreadyColorMap.size() != 0){
+                for (Map.Entry<String,Integer> entry : alreadyColorMap.entrySet()) {
+                    SignclosedProductInfo signclosedProductInfo = new SignclosedProductInfo();
+                    //根据颜色id获取产品信息获取产品信息
+                    Product product = productMapper.getProductById(Integer.valueOf(entry.getKey()));
+                    if(product == null){
+                        return false;
+                    }
+                    signclosedProductInfo.setSignclosedId(record.getSignclosedId());
+                    signclosedProductInfo.setProductName(product.getProductName());
+                    signclosedProductInfo.setProductNum(entry.getValue());
+                    signclosedProductInfo.setSignclosedProductType(1);
+                    signclosedProductInfo.setSignclosedProductId(product.getProductId());
+                    signclosedProductInfo.setSignclosedProductColor(Integer.valueOf(entry.getKey()));
+                    signclosedProductInfo.setSignclosedCreateTime(new Date());
+                    complaintSignclosedProductInfoMapper.insert(signclosedProductInfo);
+                }
+            }
+            if(alreadyFittingsMap != null || alreadyFittingsMap.size() != 0){
+                for (Map.Entry<String,Integer> entry : alreadyFittingsMap.entrySet()) {
+                    SignclosedProductInfo signclosedProductInfo = new SignclosedProductInfo();
+                    //根据配件id获取配件信息
+                    FittingsInfo fittingsInfo = fittingsInfoMapper.getFittingsById(Integer.valueOf(entry.getKey()));
+                    if(fittingsInfo == null){
+                        return false;
+                    }
+                    signclosedProductInfo.setSignclosedId(record.getSignclosedId());
+                    signclosedProductInfo.setProductName(fittingsInfo.getFittingsName());
+                    signclosedProductInfo.setProductNum(entry.getValue());
+                    signclosedProductInfo.setSignclosedProductType(2);
+                    signclosedProductInfo.setSignclosedProductId(fittingsInfo.getFittingsId());
+                    signclosedProductInfo.setSignclosedProductColor(null);
+                    signclosedProductInfo.setSignclosedCreateTime(new Date());
+                    complaintSignclosedProductInfoMapper.insert(signclosedProductInfo);
+                }
+            }
+        }
+        return msg;
     }
 
     @Override

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

@@ -29,4 +29,9 @@ public interface AwaitingSignclosedProductMapper {
      * @return
      */
     int updateById(AwaitingSignclosedProductInfo record);
+    /**
+     * 根据签收id获取多个待签收产品
+     */
+    List<AwaitingSignclosedProductInfo> listBySignclosedId(Integer signclosedId);
+
 }

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

@@ -72,4 +72,25 @@
     </set>
     where product_id = #{productId,jdbcType=INTEGER}
   </update>
+
+
+
+  <select id="listBySignclosedId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    SELECT
+      sp.product_id productId,
+      sp.signclosed_id signclosedId,
+      sp.product_name productName,
+      sp.product_num productNum,
+      sp.signclosed_create_time signclosedCreateTime,
+      sp.signclosed_update_time signclosedUpdateTime,
+      sp.signclosed_product_type signclosedProductType,
+      sp.signclosed_product_id signclosedProductId,
+      sp.signclosed_product_color signclosedProductColor,
+      pc.color_name colorName
+      FROM
+      tb_rst_complaint_awaiting_signclosed_product sp
+      LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
+      WHERE
+      signclosed_id = #{signclosedId}
+  </select>
 </mapper>

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

@@ -70,7 +70,7 @@
     <collection property="awaitingSignclosedProductInfoList" column="SIGNCLOSED_ID" ofType="AwaitingSignclosedProductInfo" select="listAwaitingSignclosedById"/>
     <collection property="signclosedProductInfoList" column="SIGNCLOSED_ID" ofType="SignclosedProductInfo" select="listSignclosedById"/>
   </resultMap>
-  <select id="listAwaitingSignclosedById" resultType="AwaitingSignclosedProductInfo" parameterType="String" >
+  <select id="listAwaitingSignclosedById" resultType="AwaitingSignclosedProductInfo" parameterType="Integer" >
     select
     sp.product_id productId,
     sp.signclosed_id signclosedId,
@@ -87,10 +87,10 @@
     tb_rst_complaint_awaiting_signclosed_product sp
     LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
     LEFT JOIN tb_rst_product_info pi on sp.signclosed_product_id = pi.product_id
-    where signclosed_id = #{signclosedId}
+    where sp.signclosed_id = #{signclosedId}
   </select>
 
-  <select id="listSignclosedById" resultType="SignclosedProductInfo" parameterType="String" >
+  <select id="listSignclosedById" resultType="SignclosedProductInfo" parameterType="Integer" >
     select
     sp.product_id productId,
     sp.signclosed_id signclosedId,
@@ -107,7 +107,7 @@
     tb_rst_complaint_signclosed_product sp
     LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
     LEFT JOIN tb_rst_product_info pi on sp.signclosed_product_id = pi.product_id
-    where signclosed_id = #{signclosedId}
+    where sp.signclosed_id = #{signclosedId}
   </select>
   <select id="listSignclosed" resultMap="complaintSignclosedInfoMap" parameterType="ComplaintSignclosedInfo" >
     SELECT

+ 76 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSignclosedController.java

@@ -4,6 +4,7 @@ import com.iamberry.rst.core.cm.*;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.AwaitingSignclosedProductInfoService;
 import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
 import com.iamberry.rst.faces.cm.ComplaintSignclosedInfoService;
 import com.iamberry.rst.faces.cm.FittingsInfoService;
@@ -45,6 +46,8 @@ public class AdminSignclosedController {
     private FittingsInfoService fittingsInfoService;
     @Autowired
     private ComplaintSignclosedInfoService complaintSignclosedInfoService;
+    @Autowired
+    private AwaitingSignclosedProductInfoService awaitingSignclosedProductInfoService;
     /**
      * 跳转到添加签收记录页面
      *
@@ -167,5 +170,78 @@ public class AdminSignclosedController {
         return msg;
     }
 
+    /**
+     * 跳转到完成签收记录页面
+     *
+     * @return
+     */
+    @RequiresPermissions("signclosed:update:signclosed")
+    @RequestMapping(value = "/to_complete_signclosed")
+    public ModelAndView toCompleteDetect(HttpServletRequest request,Integer signclosedId) {
+        ModelAndView mv = new ModelAndView("cm/signclosed/complete_signclosed");
+        //获取所有待收产品及其颜色,配件
+        if(signclosedId == null){
+            return mv;
+        }
+        ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
+        List<AwaitingSignclosedProductInfo> signclosedList = awaitingSignclosedProductInfoService.listBySignclosedId(signclosedId);
+        mv.addObject("signclosedList",signclosedList);
+        mv.addObject("complaintSignclosedInfo",complaintSignclosedInfo);
+        return mv;
+    }
+
+
+    /**
+     * 完成签收信息
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("signclosed:update:signclosed")
+    @ResponseBody
+    @RequestMapping("/complete_signclosed")
+    public ResponseJson completeSignclosed(HttpServletRequest request,ComplaintSignclosedInfo signclosedInfo) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        if(signclosedInfo == null){
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+            return msg;
+        }
+
+
+        /**签收产品**/
+        String[] alreadyColorName = request.getParameterValues("alreadyColorName");
+        String[] alreadyFittingsName = request.getParameterValues("alreadyFittingsName");
+
+        Map<String,Integer> alreadyColorMap = new HashMap<>();
+        if(alreadyColorName != null && alreadyColorName.length> 0){
+            for (int i = 0;i<alreadyColorName.length;i++){
+                alreadyColorMap.put(alreadyColorName[i],Integer.valueOf(request.getParameter("alreadyColorId"+alreadyColorName[i])));
+            }
+        }
+        Map<String, Integer> alreadyFittingsMap = new HashMap<>();
+        if(alreadyFittingsName != null && alreadyFittingsName.length> 0) {
+            for (int i = 0; i < alreadyFittingsName.length; i++) {
+                alreadyFittingsMap.put(alreadyFittingsName[i], Integer.valueOf(request.getParameter("alreadyFittingsId" + alreadyFittingsName[i])));
+            }
+        }
+        String signclosedDate = request.getParameter("signclosed_date");
+        if(signclosedDate != null){
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            signclosedInfo.setSignclosedDate(format.parse(signclosedDate));
+        }
+        signclosedInfo.setSignclosedState(1);
+        boolean num = complaintSignclosedInfoService.updateSignclosedById(signclosedInfo,alreadyColorMap,alreadyFittingsMap);
+
+
+        if (!num) {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+        } else {
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+        }
+        return msg;
+    }
 }
 

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

@@ -46,7 +46,7 @@
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
         .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
     </style>
-    <title>添加客诉 - 客诉管理 - RST</title>
+    <title>添加签收 - 客诉管理 - RST</title>
 </head>
 <body>
 <nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页

+ 287 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/signclosed/complete_signclosed.ftl

@@ -0,0 +1,287 @@
+<!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"/>
+    <link href="${path}/common/lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/icheck/icheck.css" rel="stylesheet" type="text/css"/>
+    <style>
+        .tit{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        .tit-2{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit-2:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
+
+        #suggest, #suggest2 {width:200px}
+        .gray {color:gray}
+        .ac_results {background:#fff;border:1px solid #7f9db9;position: absolute;z-index: 10000;display: none}
+        .ac_results li a {white-space: nowrap;text-decoration:none;display:block;color:#05a;padding:1px 3px}
+        .ac_results li {border:1px solid #fff}
+        .ac_over, .ac_results li a:hover {background:#c8e3fc}
+        .ac_results li a span {float:right}
+        .ac_result_tip {border-bottom:1px dashed #666;padding:3px}
+
+        .select-box{background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;}
+        .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
+        .dalog-ask{position: absolute;left:60%;top:0;-webkit-transform: translateY(-30%);transform: translateY(-30%);display: none;background-color: #fff;z-index: 10;}
+        .tag{ width:300px; min-height:300px; border:1px solid #32a3d8; position:relative;background-color: #fff;line-height: 1.5;padding: 10px 12px;}
+        .tag em{display:block; border-width:15px; position:absolute; top:30%; left:-30px;border-style:solid dashed dashed; border-color:transparent  #32a3d8 transparent transparent;font-size:0; line-height:0;}
+        .dalog-ask .ask{color: #000;margin: 10px 0 5px 0;}
+        .dalog-ask .answer{color: #666;margin-bottom: 10px;}
+        .dalog-ask .answer:hover{color: #32a3d8;cursor: pointer;}
+        .time-line-list{list-style: none;width: 100%;margin-left: -20px;}
+        .time-line-list>li{position: relative;float: left; text-align: center;width: 100px;overflow: hidden;white-space: nowrap;word-break: break-all;padding: 2px 0;}
+        .time-line-list .number{display: inline-block; padding: 2px; background: #32a3d8;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
+        .time-line-list>li:before{content:'';position: absolute;height: 1px;width: 30%;right:0;top: 15px; background-color: #32a3d8;}
+        .time-line-list>li:after{content: '';position: absolute;height: 1px;width: 30%;left: 0;top: 15px;background:#32a3d8;}
+        .time-line-list>li:first-child:after,.time-line-list>li:last-child:before{display: none;}
+        .time-line-list .arrow{border-width:7px; position:absolute; left:25%; top:9px;border-style:solid dashed dashed; border-color:transparent  transparent  transparent #32a3d8;font-size:0; line-height:0;}
+        .time-line-list>li:first-child .arrow{display: none;}
+        .table-bg th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
+    </style>
+    <title>完成签收 - 客诉管理 - RST</title>
+</head>
+<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;">
+    <div class="pd-20 cl">
+        <form action="" method="post" class="form form-horizontal" id="form-signclosed-add">
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>寄送信息:</label>
+                <#if (signclosedList?size > 0)>
+                    <#list signclosedList as signclosed>
+                        <#if signclosed.signclosedProductType == 1>
+                            ${signclosed.productName!''}-${signclosed.colorName!''}*${signclosed.productNum!''}台
+                        <#else>
+                            ${signclosed.productName!''}*${signclosed.productNum!''}件
+                        </#if>
+                    </#list>
+                </#if>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>客服备注:</label>
+                ${complaintSignclosedInfo.signclosedCustomerDesc!''}
+            </div>
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>寄回产品:</label>
+                <div class="formControls col-8 col-sm-8 text-c" id="produceSelect">
+                    <table class="table table-border table-bg table-bordered">
+                        <thead>
+                        <tr class="text-c">
+                            <th style="text-align: center;" width="100">产品名称</th>
+                            <th style="text-align: center;" width="100">产品数量</th>
+                        </tr>
+                        </thead>
+                        <tbody id="addProduct">
+                        <#if (signclosedList?size > 0)>
+                            <#list signclosedList as signclosed>
+                            <tr >
+                                <#if signclosed.signclosedProductType == 1>
+                                    <td>
+                                        <input type="checkbox" id="" value="${signclosed.signclosedProductColor!''}" name="alreadyColorName" datatype="*">
+                                        ${signclosed.productName!''}-${signclosed.colorName!''}</td>
+                                    <td>
+                                        <input type="text" style="width: 50px;margin-left: 10px;" class="input-text" value="${signclosed.productNum!''}" placeholder="数量" id="alreadyColorId${signclosed.signclosedProductColor!''}" name="alreadyColorId${signclosed.signclosedProductColor!''}"><br>
+                                    </td>
+                                <#else>
+                                    <td>
+                                        <input type="checkbox" id="" value="${signclosed.signclosedProductId!''}" name="alreadyFittingsName" datatype="*">
+                                        ${signclosed.productName!''}</td>
+                                    <td>
+                                        <input type="text" style="width: 50px;margin-left: 10px;" class="input-text" value="${signclosed.productNum!''}" placeholder="数量" id="alreadyFittingsId${signclosed.signclosedProductId!''}" name="alreadyFittingsId${signclosed.signclosedProductId!''}"><br>
+                                    </td>
+                                </#if>
+
+                            </tr>
+                            </#list>
+                        </#if>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>寄件人信息:</label>
+                <div class="formControls col-4 col-sm-4 skin-minimal">
+                    <input type="text" style="width: 150px;margin-left: 10px;" class="input-text" placeholder="寄件方姓名/公司名称" id="signclosedSendName" name="signclosedSendName">
+                    <input type="text" style="width: 150px;margin-left: 10px;" class="input-text" placeholder="寄件方联系电话" id="signclosedSendTel" name="signclosedSendTel">
+                </div>
+            </div>
+
+            <div class="row cl" style="position: relative;">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>寄件区域:</label>
+                <div class="formControls col-3 col-sm-3 skin-minimal">
+                    <span class="select-box">
+                    <select name="signclosedAddrProvinces" id="province" class="select">
+
+
+                    </select>
+                     </span>
+                </div>
+                    <div class="formControls col-3 col-sm-3 skin-minimal">
+                    <span class="select-box">
+                    <select name="signclosedAddrCity" id="city" class="select">
+
+
+                    </select>
+                    </span>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>签收日期:</label>
+                <div class="formControls col-5 col-sm-5 skin-minimal">
+                    <input type="text" style="width: 150px;margin-left: 10px;" class="input-text my-input-date" placeholder="签收日期" onClick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})" id="signclosed_date" name="signclosed_date" readonly="readonly"/>
+                </div>
+            </div>
+
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>是否少配件:</label>
+                <div class="formControls col-5 col-sm-5 skin-minimal">
+                    <div class="radio-box">
+                        <input type="radio" id="tel-4" name="signclosedIsFittings" value="1" datatype="*" checked  >
+                        <label for="tel-4">缺少配件</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="tel-5" name="signclosedIsFittings" value="2" datatype="*">
+                        <label for="tel-5">不缺配件</label>
+                    </div>
+                </div>
+            </div>
+
+            <div class="row cl" id="objectsStateId">
+                <label class="form-label col-3 col-sm-3"><span class="c-red">*</span>物件状态:</label>
+                <div class="formControls col-5 col-sm-5 skin-minimal">
+                    <div class="radio-box">
+                        <input type="radio" id="tel-12" name="signclosedObjectsState" value="1" datatype="*" checked  >
+                        <label for="tel-8">正常签收</label>
+                    </div>
+                    <div class="radio-box">
+                        <input type="radio" id="tel-13" name="signclosedObjectsState" value="2" datatype="*">
+                        <label for="tel-9">物件不对</label>
+                    </div>
+                </div>
+            </div>
+            <div class="row cl">
+                <label class="form-label col-3 col-sm-3">备注:</label>
+                <div class="formControls col-5 col-sm-5">
+                    <textarea name="signclosedDesc" id="signclosedDesc" cols="" rows="2" class="textarea" placeholder="请填写备注"></textarea>
+                </div>
+            </div>
+            <div class="row cl">
+                <div class="col-2 col-sm-2 col-offset-3">
+                    <input type="hidden" id="signclosedId" name="signclosedId" value="${complaintSignclosedInfo.signclosedId!''}">
+                    <button onClick="add();" class="btn btn-block btn-primary size-XL" type="button">确认签收</button>
+                </div>
+            </div>
+        </form>
+    </div>
+</article>
+
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript" src="${path}/common/lib/webuploader/0.1.5/webuploader.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/icheck/jquery.icheck.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/jquery.provincesCity.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/provincesData.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/airCity.js"></script>
+<#--<script type="text/javascript" src="${path}/common/lib/cm.lib/dimensions.js"></script>-->
+<script type="text/javascript" src="${path}/common/lib/cm.lib/suggest.js"></script>
+<script type="text/javascript">
+    $(function(){
+        var province = listProvince(null,null);
+        var provinceHtml = '';
+        for(var i=0;i<province.length;i++){
+                provinceHtml += '<option value="'+ province[i].provinceId +'">'+ province[i].province +'</option>';
+        }
+        $("#province").html(provinceHtml);
+
+       var city = listCity(null,null);
+        var cityHtml = '';
+        for(var i=0;i<city.length;i++){
+            cityHtml += '<option value="'+ city[i].cityId +'">'+ city[i].city +'</option>';
+        }
+        $("#city").html(cityHtml);
+
+
+        /*监听省选择事件*/
+        $(document).on('change', '#province', function() {
+            var proId = $("#province").val();
+            var city = listCity(proId,null);
+            var cityHtml = '';
+            for(var i=0;i<city.length;i++){
+                cityHtml += '<option value="'+ city[i].cityId +'">'+ city[i].city +'</option>';
+            }
+            $("#city").html(cityHtml);
+        });
+    });
+
+
+    function  add() {
+        var signclosedSendName = $("#signclosedSendName").val();
+        if( signclosedSendName == null || signclosedSendName == "" ){
+            layer.msg('寄件人姓名不能为空',{icon: 5,time:1000});
+            return;
+        }
+        if( signclosedSendName.length > 10 ){
+            layer.msg('寄件人姓名长度不得大于10个字符',{icon: 5,time:1000});
+            return;
+        }
+        var signclosedSendTel = $("#signclosedSendTel").val();
+        if( signclosedSendTel == null || signclosedSendTel == "" ){
+            layer.msg('请输入寄件人电话',{icon: 5,time:1000});
+            return;
+        }
+        if( signclosedSendTel.length > 11 ){
+            layer.msg('寄件人电话长度不得大于11个字符',{icon: 5,time:1000});
+            return;
+        }
+        var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
+        if(!myreg.test(signclosedSendTel)){
+            layer.msg('寄件人电话格式不正确',{icon: 5,time:1000});
+            return;
+        }
+
+        var signclosedDesc = $("#signclosedDesc").val();
+        if( signclosedDesc != null || signclosedDesc == "" ){
+            if( signclosedDesc.length > 300 ){
+                layer.msg('备注长度不得大于150个字符',{icon: 5,time:1000});
+                return;
+            }
+        }
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/admin/signclosed/complete_signclosed",
+            data:$('#form-signclosed-add').serialize(),// 你的formid
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg('添加成功',{icon: 1,time:1000},function () {
+                        location.replace(location.href);
+                    });
+                } else {
+                    layer.msg('添加失败',{icon: 5,time:1000});
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('添加错误',{icon: 5,time:1000});
+            }
+        });
+    }
+</script>
+<!--/请在上方写此页面业务相关的脚本-->
+</body>
+</html>

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

@@ -196,7 +196,10 @@
                     <td class="text-c" width="100">${signclosed.signclosedDesc!}</td>
                     <!-- 遍历操作 -->
                     <td class="td-manage text-c">
-
+                        <a style="text-decoration:none" href="javascript:;" title="签收"
+                           onclick="update_info('签收','${path}/admin/signclosed/to_complete_signclosed?signclosedId=${signclosed.signclosedId!}','570','450');">
+                            <i class="Hui-iconfont">&#xe6df;</i>
+                        </a>
                     </td>
                 </tr>
                 </#list>
@@ -219,7 +222,7 @@
     function add_remark(title,url,w,h){
         layer_show(title,url,w,h);
     }
-    /*转入生产*/
+    /*签收*/
     function update_info(title,url,w,h){
         layer_show(title,url,w,h);
     }