Przeglądaj źródła

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

# Conflicts:
#	watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
wangxiaoming 7 lat temu
rodzic
commit
f73d489cf0

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

@@ -15,6 +15,16 @@ public class QuestionDescribe implements Serializable {
     //   客诉主键  ,
     private Integer customerId;
 
+    private String describeTitle;   //客诉标题
+
+    public String getDescribeTitle() {
+        return describeTitle;
+    }
+
+    public void setDescribeTitle(String describeTitle) {
+        this.describeTitle = describeTitle;
+    }
+
     public Integer getDescribeId() {
         return describeId;
     }

+ 17 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Visit.java

@@ -18,6 +18,7 @@ public class Visit implements Serializable {
     private String visitName;
 
     private String visitTel;
+
     @DateTimeFormat(pattern="yyyy-MM-dd")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date visitDate;
@@ -26,6 +27,8 @@ public class Visit implements Serializable {
 
     private Integer visitStatus;
 
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date visitCompleteDate;
 
     private String visitCompleteName;
@@ -34,10 +37,24 @@ public class Visit implements Serializable {
 
     private String visitCompleteRemark;
 
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date visitCreateTime;
 
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date visitUpdateTime;
 
+    private Integer visitCompleteSex;       //回访人性别
+
+    public Integer getVisitCompleteSex() {
+        return visitCompleteSex;
+    }
+
+    public void setVisitCompleteSex(Integer visitCompleteSex) {
+        this.visitCompleteSex = visitCompleteSex;
+    }
+
     public Integer getVisitId() {
         return visitId;
     }

+ 18 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/QuestionDescribeService.java

@@ -0,0 +1,18 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.QuestionDescribe;
+
+import java.util.List;
+
+/**
+ * Created by liuzhiwei on 2017/11/6.
+ */
+public interface QuestionDescribeService {
+
+    /**
+     * 查询问题集合
+     * @param record
+     * @return
+     */
+    List<QuestionDescribe> listQuestionDescribe(QuestionDescribe record);
+}

+ 17 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/VisitService.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.Visit;
 
+import java.util.List;
+
 /**
  * Created by liuzhiwei on 2017/11/3.
  */
@@ -12,5 +14,19 @@ public interface VisitService {
      * @param visit
      * @return
      */
-    Integer addVisitInfo(Visit visit);
+    Integer addVisitInfo(Visit visit, int customerId);
+
+    /**
+     * 修改回访信息内容
+     * @param visit
+     * @return
+     */
+    Integer updateVisit(Visit visit);
+
+    /**
+     * 查询回访列表
+     * @param visit
+     * @return
+     */
+    List<Visit> listVisit(Visit visit);
 }

+ 24 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/QuestionDescribeServiceImpl.java

@@ -0,0 +1,24 @@
+package com.iamberry.rst.service.cm;
+
+import com.iamberry.rst.core.cm.QuestionDescribe;
+import com.iamberry.rst.faces.cm.QuestionDescribeService;
+import com.iamberry.rst.service.cm.mapper.QuestionDescribeMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by Administrator on 2017/11/6.
+ */
+@Service
+public class QuestionDescribeServiceImpl implements QuestionDescribeService {
+
+    @Autowired
+    private QuestionDescribeMapper questionDescribeMapper;
+
+    @Override
+    public List<QuestionDescribe> listQuestionDescribe(QuestionDescribe record) {
+        return questionDescribeMapper.listQuestionDescribe(record);
+    }
+}

+ 29 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/VisitServiceImpl.java

@@ -1,10 +1,15 @@
 package com.iamberry.rst.service.cm;
 
+import com.iamberry.rst.core.cm.CustomerInfo;
 import com.iamberry.rst.core.cm.Visit;
 import com.iamberry.rst.faces.cm.VisitService;
+import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
 import com.iamberry.rst.service.cm.mapper.VisitMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * 客诉回访service
@@ -15,9 +20,31 @@ public class VisitServiceImpl implements VisitService {
 
     @Autowired
     private VisitMapper visitMapper;
+    @Autowired
+    private CustomerInfoMapper customerInfoMapper;
+
+    @Transactional
+    @Override
+    public Integer addVisitInfo(Visit visit, int customerId) {
+        CustomerInfo customerInfo = new CustomerInfo();
+        customerInfo.setCustomerId(customerId);
+        customerInfo.setCustomerIsVisit("2");
+        int sum = customerInfoMapper.updateCustomerInfo(customerInfo);
+        int num = visitMapper.addVisitInfo(visit);
+        if (sum > 0 && num > 0) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    public Integer updateVisit(Visit visit) {
+        return visitMapper.updateVisit(visit);
+    }
 
     @Override
-    public Integer addVisitInfo(Visit visit) {
-        return visitMapper.addVisitInfo(visit);
+    public List<Visit> listVisit(Visit visit) {
+        return visitMapper.listVisit(visit);
     }
 }

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

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.QuestionDescribe;
 
+import java.util.List;
+
 public interface QuestionDescribeMapper {
     int deleteByPrimaryKey(Integer describeId);
 
@@ -14,4 +16,11 @@ public interface QuestionDescribeMapper {
     int updateByPrimaryKeySelective(QuestionDescribe record);
 
     int updateByPrimaryKey(QuestionDescribe record);
+
+    /**
+     * 查询问题集合
+     * @param record
+     * @return
+     */
+    List<QuestionDescribe> listQuestionDescribe(QuestionDescribe record);
 }

+ 14 - 4
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/VisitMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.Visit;
 
+import java.util.List;
+
 public interface VisitMapper {
     int deleteByPrimaryKey(Integer visitId);
 
@@ -12,11 +14,19 @@ public interface VisitMapper {
      */
     Integer addVisitInfo(Visit visit);
 
-    int insertSelective(Visit record);
-
     Visit selectByPrimaryKey(Integer visitId);
 
-    int updateByPrimaryKeySelective(Visit record);
+    /**
+     * 修改回访信息内容
+     * @param visit
+     * @return
+     */
+    Integer updateVisit(Visit visit);
 
-    int updateByPrimaryKey(Visit record);
+    /**
+     * 查询回访列表
+     * @param visit
+     * @return
+     */
+    List<Visit> listVisit(Visit visit);
 }

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

@@ -15,6 +15,19 @@
     from tb_rst_question_describe
     where describe_id = #{describeId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询问题集合 -->
+  <select id="listQuestionDescribe" parameterType="QuestionDescribe" resultType="QuestionDescribe">
+    select
+      *
+    from tb_rst_question_describe
+    <where>
+      <if test="customerId">
+        customer_id = #{customerId}
+      </if>
+    </where>
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_question_describe
     where describe_id = #{describeId,jdbcType=INTEGER}

+ 40 - 36
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/visitMapper.xml

@@ -28,6 +28,18 @@
     from tb_rst_visit
     where visit_id = #{visitId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询回访列表 -->
+  <select id="listVisit" parameterType="Visit" resultType="Visit">
+    SELECT
+      *
+    FROM
+      tb_rst_visit
+    <where>
+      customer_id = #{customerId}
+    </where>
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_visit
     where visit_id = #{visitId,jdbcType=INTEGER}
@@ -39,73 +51,65 @@
       visit_name, visit_tel, visit_date, 
       visit_time_select, visit_status, visit_complete_date, 
       visit_complete_name, visit_complete_tel, visit_complete_remark, 
-      visit_create_time, visit_update_time)
+      visit_create_time, visit_update_time, visit_complete_sex)
     values (#{visitId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{adminId,jdbcType=INTEGER}, 
       #{visitName,jdbcType=VARCHAR}, #{visitTel,jdbcType=CHAR}, #{visitDate,jdbcType=DATE}, 
       #{visitTimeSelect,jdbcType=BIT}, #{visitStatus,jdbcType=TINYINT}, #{visitCompleteDate,jdbcType=DATE}, 
       #{visitCompleteName,jdbcType=VARCHAR}, #{visitCompleteTel,jdbcType=CHAR}, #{visitCompleteRemark,jdbcType=VARCHAR}, 
-      #{visitCreateTime,jdbcType=TIMESTAMP}, #{visitUpdateTime,jdbcType=TIMESTAMP})
+      #{visitCreateTime,jdbcType=TIMESTAMP}, #{visitUpdateTime,jdbcType=TIMESTAMP},
+      #{visitCompleteSex})
   </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="Visit" >
+  <!-- 修改回访信息内容 -->
+  <update id="updateVisit" parameterType="Visit" >
     update tb_rst_visit
     <set >
-      <if test="customerId != null" >
-        customer_id = #{customerId,jdbcType=INTEGER},
-      </if>
       <if test="adminId != null" >
-        admin_id = #{adminId,jdbcType=INTEGER},
+        admin_id = #{adminId},
       </if>
       <if test="visitName != null" >
-        visit_name = #{visitName,jdbcType=VARCHAR},
+        visit_name = #{visitName},
       </if>
       <if test="visitTel != null" >
-        visit_tel = #{visitTel,jdbcType=CHAR},
+        visit_tel = #{visitTel},
       </if>
       <if test="visitDate != null" >
-        visit_date = #{visitDate,jdbcType=DATE},
+        visit_date = #{visitDate},
       </if>
       <if test="visitTimeSelect != null" >
-        visit_time_select = #{visitTimeSelect,jdbcType=BIT},
+        visit_time_select = #{visitTimeSelect},
       </if>
       <if test="visitStatus != null" >
-        visit_status = #{visitStatus,jdbcType=TINYINT},
+        visit_status = #{visitStatus},
       </if>
       <if test="visitCompleteDate != null" >
-        visit_complete_date = #{visitCompleteDate,jdbcType=DATE},
+        visit_complete_date = #{visitCompleteDate},
       </if>
       <if test="visitCompleteName != null" >
-        visit_complete_name = #{visitCompleteName,jdbcType=VARCHAR},
+        visit_complete_name = #{visitCompleteName},
       </if>
       <if test="visitCompleteTel != null" >
-        visit_complete_tel = #{visitCompleteTel,jdbcType=CHAR},
+        visit_complete_tel = #{visitCompleteTel},
       </if>
       <if test="visitCompleteRemark != null" >
-        visit_complete_remark = #{visitCompleteRemark,jdbcType=VARCHAR},
+        visit_complete_remark = #{visitCompleteRemark},
       </if>
       <if test="visitCreateTime != null" >
-        visit_create_time = #{visitCreateTime,jdbcType=TIMESTAMP},
+        visit_create_time = #{visitCreateTime},
       </if>
       <if test="visitUpdateTime != null" >
-        visit_update_time = #{visitUpdateTime,jdbcType=TIMESTAMP},
+        visit_update_time = #{visitUpdateTime},
+      </if>
+      <if test="visitCompleteSex != null and visitCompleteSex != ''">
+        visit_complete_sex = #{visitCompleteSex},
       </if>
     </set>
-    where visit_id = #{visitId,jdbcType=INTEGER}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="Visit" >
-    update tb_rst_visit
-    set customer_id = #{customerId,jdbcType=INTEGER},
-      admin_id = #{adminId,jdbcType=INTEGER},
-      visit_name = #{visitName,jdbcType=VARCHAR},
-      visit_tel = #{visitTel,jdbcType=CHAR},
-      visit_date = #{visitDate,jdbcType=DATE},
-      visit_time_select = #{visitTimeSelect,jdbcType=BIT},
-      visit_status = #{visitStatus,jdbcType=TINYINT},
-      visit_complete_date = #{visitCompleteDate,jdbcType=DATE},
-      visit_complete_name = #{visitCompleteName,jdbcType=VARCHAR},
-      visit_complete_tel = #{visitCompleteTel,jdbcType=CHAR},
-      visit_complete_remark = #{visitCompleteRemark,jdbcType=VARCHAR},
-      visit_create_time = #{visitCreateTime,jdbcType=TIMESTAMP},
-      visit_update_time = #{visitUpdateTime,jdbcType=TIMESTAMP}
-    where visit_id = #{visitId,jdbcType=INTEGER}
+    <where>
+      <if test="visitId != null and visitId != ''">
+        visit_id = #{visitId}
+      </if>
+      <if test="customerId != null and customerId != ''">
+        and customer_id = #{customerId}
+      </if>
+    </where>
   </update>
 </mapper>

+ 78 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -50,6 +50,8 @@ public class AdminCustomerController {
     private ComplaintTypeInfoService complaintTypeInfoService;
     @Autowired
     private VisitService visitService;
+    @Autowired
+    private QuestionDescribeService questionDescribeService;
 
     /**
      * 获取客诉列表
@@ -216,7 +218,7 @@ public class AdminCustomerController {
         visit.setAdminId(Integer.parseInt(visitAdminId));
         visit.setVisitStatus(1);
         visit.setVisitCreateTime(new Date());
-        int num = visitService.addVisitInfo(visit);
+        int num = visitService.addVisitInfo(visit, visit.getCustomerId());
         if (num > 0) {
             return new ResponseJson(200, "修改成功!", 200);
         } else {
@@ -302,6 +304,81 @@ public class AdminCustomerController {
         }
     }
 
+    /**
+     * 添加回访完成内容
+     * @param request
+     * @param visit
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:update:visit")
+    @RequestMapping("/update_visit_finish")
+    public ResponseJson updateVisitFinish(HttpServletRequest request,Visit visit) {
+        String customerId = request.getParameter("finish_customerId");
+        if (!StringUtils.isNotEmpty(customerId)) {
+            return new ResponseJson(500, "该客诉信息不存在!", 500);
+        }
+        visit.setCustomerId(Integer.parseInt(customerId));
+        visit.setVisitStatus(2);
+        //修改回访信息内容
+        int num = visitService.updateVisit(visit);
+        if (num > 0) {
+            return new ResponseJson(200, "添加成功!", 200);
+        } else {
+            return new ResponseJson(500, "添加失败!", 500);
+        }
+    }
 
+    /**
+     * 获取回访信息详情
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:get:visit")
+    @RequestMapping("/get_visit_info")
+    public ResponseJson getVisitInfo(HttpServletRequest request) {
+        String customerId = request.getParameter("customerId");
+        if (!StringUtils.isNotEmpty(customerId)) {
+            return new ResponseJson(500, "该客诉信息不存在!", 500);
+        }
+        Visit visit = new Visit();
+        visit.setCustomerId(Integer.parseInt(customerId));
+        //查询回访信息集合
+        List<Visit> visitList = visitService.listVisit(visit);
+        if (visitList == null || visitList.size() == 0) {
+            return new ResponseJson(500, "该客诉没有回访信息!", 500);
+        }
+        visit = visitList.get(0);
+        ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+        rj.addResponseKeyValue("visit", visit);
+        return rj;
+    }
+
+    /**
+     * 获取问题描述信息
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:get:describe")
+    @RequestMapping("/get_describe_info")
+    public ResponseJson getDescribeInfo(HttpServletRequest request) {
+        String customerId = request.getParameter("customerId");
+        if (!StringUtils.isNotEmpty(customerId)) {
+            return new ResponseJson(500, "该客诉信息不存在!", 500);
+        }
+        QuestionDescribe describe = new QuestionDescribe();
+        describe.setCustomerId(Integer.parseInt(customerId));
+        //查询问题集合
+        List<QuestionDescribe> questionList = questionDescribeService.listQuestionDescribe(describe);
+        if (questionList == null || questionList.size() == 0) {
+            return new ResponseJson(500, "该客诉信息没有问题描述!", 500);
+        }
+        describe = questionList.get(0);
+        ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+        rj.addResponseKeyValue("describe", describe);
+        return rj;
+    }
 }
 

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

@@ -87,79 +87,125 @@
                 </div>
             </form>
             <span class="layui-layer-setwin">
-				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="hideVisit()" href="javascript:;"></a>
+				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="hide_this(this)" href="javascript:;"></a>
 		</span>
         </div>
         <!-- 客诉回访end -->
         <!-- 录入已完成回访内容start -->
-        <div class="layui-layer layui-anim layui-layer-iframe" id="layui-visit" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 550px; height: 400px; position: absolute; top: 100px; left: 350px;text-align: left;">
-            <form action="" name="form-admin-visit" method="post" class="form form-horizontal" id="form-admin-visit">
+        <div class="layui-layer layui-anim layui-layer-iframe" id="layui-visit-finish" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 550px; height: 400px; position: absolute; top: 100px; left: 350px;text-align: left;">
+            <form action="" name="form-visit-finish" method="post" class="form form-horizontal" id="form-visit-finish">
                 <div class="layui-layer-title" id="synOrder" style="cursor: move;" move="ok">已完成回访</div>
                 <br>
                 <div style="margin-left: 10px;">
                     <div class="formControls" style="margin-top: 10px;">
+                        <input type="hidden" id="finish_customerId" name="finish_customerId">
                         <label><span class="c-red">*</span>&nbsp;回访日期:</label>
-                        <input type="text" id="visitDate" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd',skin:'whyGreen' })" class="input-text" value="" style="width: 200px;" name="visitDate" nullmsg="回访日期不能为空" readonly="readonly"">
+                        <input type="text" id="visitCompleteDate" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd',skin:'whyGreen' })" class="input-text" value="" style="width: 200px;" name="visitCompleteDate" nullmsg="回访日期不能为空" readonly="readonly"">
                     </div>
                     <div class="col-4"> </div>
                 </div>
                 <div style="margin-left: 10px;">
                     <div class="formControls" style="margin-top: 10px;">
                         <label><span class="c-red">*</span>&nbsp;客诉性别:</label>
-                        <input type="radio" name="visitTimeSelect" value="1" checked="checked"/><label>男&nbsp;&nbsp;</label>
-                        <input type="radio" name="visitTimeSelect" value="2"/><label>女&nbsp;&nbsp;</label>
+                        <input type="radio" name="visitCompleteSex" value="1" checked="checked"/><label>男&nbsp;&nbsp;</label>
+                        <input type="radio" name="visitCompleteSex" value="2"/><label>女&nbsp;&nbsp;</label>
                     </div>
                     <div class="col-4"> </div>
                 </div>
                 <div style="margin-left: 10px;">
                     <div class="formControls">
-                        <label><span class="c-red">*</span>&nbsp;回访人信息:</label>
-                        <input type="hidden" id="customerId" name="customerId">
-                        <input type="text" id="visitName" style="width: 150px;" class="input-text" value="" placeholder="回访人姓名" name="visitName" nullmsg="回访人姓名不能为空">
-                        <input type="text" id="visitTel" style="width: 150px;" class="input-text" value="" placeholder="回访人电话" name="visitTel" nullmsg="回访人电话不能为空">
+                        <label><span class="c-red">*</span>&nbsp;回访联系人:</label>
+                        <input type="text" id="visitCompleteName" class="input-text" value="" style="width: 200px;" name="visitCompleteName" nullmsg="回访联系人不能为空">
                     </div>
                 </div>
                 <div style="margin-left: 10px;">
                     <div class="formControls" style="margin-top: 10px;">
-                        <label><span class="c-red">*</span>&nbsp;回访时间:</label>
-                        <input type="radio" name="visitTimeSelect" value="1" checked="checked"/><label>9:00 - 12:00&nbsp;&nbsp;</label>
-                        <input type="radio" name="visitTimeSelect" value="2"/><label>12:00 - 14:00&nbsp;&nbsp;</label>
-                        <input type="radio" name="visitTimeSelect" value="3"/><label>14:00 - 18:00</label>
+                        <label><span class="c-red">*</span>&nbsp;回访电话:</label>
+                        <input type="text" id="visitCompleteTel" class="input-text" value="" style="width: 200px;" name="visitCompleteTel" nullmsg="电话号码不能为空">
                     </div>
                     <div class="col-4"> </div>
                 </div>
                 <div style="margin-left: 10px;">
                     <div class="formControls" style="margin-top: 10px;">
-                        <label><span class="c-red">*</span>&nbsp;提醒人:</label>
-                        <select class="my-select" name="visitAdminId" id="visitAdminId" style="height: 36px;width: 200px;margin: 0px;padding: 6px 10px 6px 15px;">
-                        <#if adminList?? &&  (adminList?size > 0) >
-                            <#list adminList as admin>
-                                <option value ="${admin.adminId!}" >${admin.adminName!}</option>
-                            </#list>
-                        </#if>
-                        </select>
+                        <label><span class="c-red">*</span>&nbsp;回复备注:</label>
+                        <input type="text" id="visitCompleteRemark" class="input-text" value="" style="width: 200px;" name="visitCompleteRemark">
                     </div>
                     <div class="col-4"> </div>
                 </div>
-                <div style="margin-left: 10px;">
-                    <label>
-                        您将为 自己 指定一个回访任务。<br/>
-                        提示原则:<br/>
-                        1、上午的回访 系统将在16日晚上22点、17日早晨9:30提醒您;<br/>
-                        2、中午的回访 系统将在本日12点提醒您;<br/>
-                        3、下午的回访 系统将在本日14:00提醒您。<br/>
-                        如果没有在指定时间完成,系统将于第二天开始推送。<br/>
-                    </label>
-                </div>
+                <br/>
                 <div class="col-9 col-offset-3">
-                    <input class="btn btn-primary radius" onclick="addVisitInfo();" type="button" value="&nbsp;&nbsp;确认&nbsp;&nbsp;">
+                    <input class="btn btn-primary radius" onclick="updateVisitInfo();" type="button" value="&nbsp;&nbsp;确认&nbsp;&nbsp;">
                 </div>
             </form>
             <span class="layui-layer-setwin">
-				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="hideVisit()" href="javascript:;"></a>
+				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="hide_this(this)" href="javascript:;"></a>
 		</span>
         </div>
         <!-- 录入已完成回访内容end -->
+        <!-- 查看已完成回访内容start -->
+        <div class="layui-layer layui-anim layui-layer-iframe" id="select-visit-finish" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 550px; height: 400px; position: absolute; top: 100px; left: 350px;text-align: left;">
+            <form action="" name="form-visit-finish" method="post" class="form form-horizontal" id="form-visit-finish">
+                <div class="layui-layer-title" id="synOrder" style="cursor: move;" move="ok">回访内容</div>
+                <br>
+                <div style="margin-left: 10px;">
+                    <div class="formControls" style="margin-top: 10px;">
+                        <label><span class="c-red">*</span>&nbsp;回访日期:</label>
+                        <label id="txtVisitCompleteDate"></label>
+                    </div>
+                    <div class="col-4"> </div>
+                </div>
+                <div style="margin-left: 10px;">
+                    <div class="formControls">
+                        <label><span class="c-red">*</span>&nbsp;回访联系人:</label>
+                        <label id="txtVisitCompleteName"></label>
+                    </div>
+                </div>
+                <div style="margin-left: 10px;">
+                    <div class="formControls" style="margin-top: 10px;">
+                        <label><span class="c-red">*</span>&nbsp;回访电话:</label>
+                        <label id="txtVisitCompleteTel"></label>
+                    </div>
+                    <div class="col-4"> </div>
+                </div>
+                <div style="margin-left: 10px;">
+                    <div class="formControls" style="margin-top: 10px;">
+                        <label><span class="c-red">*</span>&nbsp;回复备注:</label>
+                        <label id="txtVisitCompleteRemark"></label>
+                    </div>
+                    <div class="col-4"> </div>
+                </div>
+                <br/>
+            </form>
+            <span class="layui-layer-setwin">
+				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="hide_this(this)" href="javascript:;"></a>
+		</span>
+        </div>
+        <!-- 查看问题描述内容start -->
+        <div class="layui-layer layui-anim layui-layer-iframe" id="select-question-describe" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 550px; height: 400px; position: absolute; top: 100px; left: 350px;text-align: left;">
+            <form action="" name="form-visit-finish" method="post" class="form form-horizontal" id="form-visit-finish">
+                <div class="layui-layer-title" id="synOrder" style="cursor: move;" move="ok">回访内容</div>
+                <br>
+                <div style="margin-left: 10px;">
+                    <div class="formControls" style="margin-top: 10px;">
+                        <label><span class="c-red">*</span>&nbsp;简述:</label>
+                        <label id="txtDescribeTitle"></label>
+                    </div>
+                    <div class="col-4"> </div>
+                </div>
+                <div style="margin-left: 10px;">
+                    <div class="formControls" style="margin-top: 10px;">
+                        <label><span class="c-red">*</span>&nbsp;详情:</label>
+                        <label id="txtDescribeContent"></label>
+                    </div>
+                    <div class="col-4"> </div>
+                </div>
+                <br/>
+            </form>
+            <span class="layui-layer-setwin">
+				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="hide_this(this)" href="javascript:;"></a>
+		</span>
+        </div>
+        <!-- 查看已完成回访内容end -->
         <form action="${path}/admin/customer/select_customer_list" method="post">
             <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddCustomer();">新建客诉</button>
             <input type="text" class="my-input"  style="width:100px;margin-right: 0px;" value="${customerId!}" placeholder="客户姓名" id="customerName" name="customerName">
@@ -204,6 +250,7 @@
         </form>
     </div>
 
+
     <div class="mt-20">
         <table class="table table-border table-bordered table-bg table-hover table-sort">
         <thead>
@@ -245,7 +292,12 @@
                             <td>${customer.typeName!''}</td>
                             <td>${customer.complaintClassName!''}</td>
                             <td>${customer.smallClassName!''}</td>
-                            <td>${customer.describeTitle!''}</td>
+                            <td>
+                                ${customer.describeTitle!''}
+                                    <a style="text-decoration:none" href="javascript:void(0);" title="回访内容" onclick="getDescribeInfo(${customer.customerId!''})">
+                                        <i class="Hui-iconfont">查看详情</i>
+                                    </a>&nbsp;
+                            </td>
                             <td>${customer.companyName!''}-${customer.storeName!''}</td>
                             <td>${(customer.salesTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>${customer.customerArea!''}</td>
@@ -343,7 +395,14 @@
                                 <#if customer.customerIsVisit == "1">
                                     不需要回访
                                 <#elseif customer.customerIsVisit == "2">
-                                    需要回访
+                                    <#if customer.visitStatus == 1>
+                                        待回访
+                                    <#elseif customer.visitStatus == 2>
+                                        已回访
+                                        <a style="text-decoration:none" href="javascript:void(0);" title="回访内容" onclick="getVisitInfo(${customer.customerId!''})">
+                                            <i class="Hui-iconfont">回访内容</i>
+                                        </a>&nbsp;
+                                    </#if>
                                 </#if>
                             </td>
                             <td>${(customer.customerCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
@@ -357,15 +416,19 @@
                                     <i class="Hui-iconfont">详情</i>
                                 </a>&nbsp;
                                 <#if customer.customerIsVisit == "2">
-                                    <a style="text-decoration:none" href="javascript:void(0);" title="详情" onclick="admin_update_customer(${customer.customerId!''})">
-                                        <i class="Hui-iconfont">
-                                            <#if customer.visitStatus == 1 && customer.customerIsVisit == "2">
+                                    <#if customer.visitStatus == 1 && customer.customerIsVisit == "2">
+                                        <a style="text-decoration:none" href="javascript:void(0);" title="已完成回访" onclick="showVisitFinish(${customer.customerId!''})">
+                                            <i class="Hui-iconfont">
                                                 已完成回访
-                                            <#elseif customer.visitStatus == 2>
+                                            </i>
+                                        </a>&nbsp;
+                                    <#elseif customer.visitStatus == 2>
+                                        <a style="text-decoration:none" href="javascript:void(0);" title="详情" onclick="admin_update_customer(${customer.customerId!''})">
+                                            <i class="Hui-iconfont">
                                                 已收到反馈
-                                            </#if>
-                                        </i>
-                                    </a>&nbsp;
+                                            </i>
+                                        </a>&nbsp;
+                                    </#if>
                                 </#if>
                                 <a style="text-decoration:none" href="javascript:void(0);" title="修改客诉信息" onclick="admin_update_customer(${customer.customerId!''})">
                                     <i class="Hui-iconfont">修改客诉信息</i>
@@ -417,13 +480,18 @@
         window.location.href= "${path}/admin/customer/to_details_customer?customerId="+customerId;
     }
 
+    function showVisitFinish(customerId) {
+        $('#layui-visit-finish').show();
+        $('#finish_customerId').val(customerId);
+    }
+
     function showVisit(customerId) {
         $('#layui-visit').show();
         $('#customerId').val(customerId);
     }
 
-    function hideVisit() {
-        $('#layui-visit').hide();
+    function hide_this(val) {
+        $(val).parent().parent().hide();
     }
 
     function checkValue() {
@@ -486,6 +554,94 @@
     }
 
     /**
+     * 添加回访完成信息
+     */
+    function updateVisitInfo() {
+        var visitCompleteSex = $('input[name="visitCompleteSex"]:checked').val();
+        if (!uname.test($('#visitCompleteName').val().trim())) {
+            alert("回访人姓名格式不正确,请重新填写!");
+            return;
+        }
+        if (!mobile.test($('#visitCompleteTel').val().trim())) {
+            alert("手机号码格式不正确,请重新填写!");
+            return;
+        }
+        if ($('#visitCompleteDate').val().trim() == null || $('#visitCompleteDate').val().trim() == '') {
+            alert("请选择回访日期!");
+            return;
+        }
+        if (visitCompleteSex == null || visitCompleteSex == '') {
+            alert("请选择客诉性别!");
+            return;
+        }
+        $.ajax({
+            cache: true,
+            type: "POST",
+            data: $('#form-visit-finish').serialize(),
+            url: "${path}/admin/customer/update_visit_finish",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg(data.resultMsg,{icon: 1,time:1000});
+                } else {
+                    layer.msg(data.resultMsg,{icon: 5,time:1000});
+                }
+                $('#layui-visit-finish').hide();
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /**
+     * 查询回访内容
+     */
+    function getVisitInfo(customerId) {
+        $.ajax({
+            cache: true,
+            type: "POST",
+            data: {"customerId":customerId},
+            url: "${path}/admin/customer/get_visit_info",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    var visit = data.returnMsg.visit;
+                    $('#txtVisitCompleteDate').html(visit.visitCompleteDate);
+                    $('#txtVisitCompleteName').html(visit.visitCompleteName);
+                    $('#txtVisitCompleteTel').html(visit.visitCompleteTel);
+                    $('#txtVisitCompleteRemark').html(visit.visitCompleteRemark);
+                    $('#select-visit-finish').show();
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        })
+    }
+
+    /**
+     * 查询问题描述信息
+     */
+    function getDescribeInfo(customerId) {
+        $.ajax({
+            cache: true,
+            type: "POST",
+            data: {"customerId":customerId},
+            url: "${path}/admin/customer/get_describe_info",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    var describe = data.returnMsg.describe;
+                    $('#txtDescribeTitle').html(describe.describeTitle);
+                    $('#txtDescribeContent').html(describe.describeContent);
+                    $('#select-question-describe').show();
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        })
+    }
+
+    /**
      * 将未解决状态修改为已解决
      */
     function updateCustomerIsSolve(customerId) {