【SSH项目实战】国税协同平台-32.我要投诉功能2

我们先来想一下,我们的整个投诉的流程是:
1、保存投诉信息

2、提示用户投诉成功

3、刷新父窗口

4、关闭当前窗口
我们来画一下时序图(对象与对象之间的消息在时间顺序上的交互):

我们现在要做的是第9步之后的步骤

我们回顾一下我们的投诉信息填写界面:
[html]  view plain copy
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>  
  2. <%  
  3.     pageContext.setAttribute("basePath", request.getContextPath()+"/") ;  
  4. %>  
  5. <html>  
  6. <head>  
  7.     <%@include file="/common/header.jsp"%>  
  8.     <title>我要投诉</title>  
  9.     <script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/ueditor.config.js"></script>  
  10.     <script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/ueditor.all.min.js"> </script>  
  11.     <script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/lang/zh-cn/zh-cn.js"></script>  
  12.   
  13.   
  14.     <script>  
  15.         window.UEDITOR_HOME_URL = "${basePath }js/ueditor/";  
  16.         var ue = UE.getEditor('editor');  
  17.           
  18.         //根据部门查询该部门下的用户列表  
  19.         function doSelectDept(){  
  20.             //1、获取部门  
  21.             var dept=$("#toCompDept option:selected").val();  
  22.             if(dept!=""){  
  23.                 //2.根据部门查询列表  
  24.                 $.ajax({  
  25.                     url:"${basePath}sys/home_getUserJson2.action",  
  26.                     data:{"dept":dept},  
  27.                     type:"post",  
  28.                     dataType:"json",//返回数据类型  
  29.                     success:function(data){  
  30.                         //3.将列表设置到被投诉人下拉框中  
  31.                         if(data != null&&data != ""&& data!= undefined){  
  32.                             if("success"==data.msg){  
  33.                                 var toCompName = $("#toCompName");  
  34.                                 toCompName.empty();  
  35.                                 //使用each标签将userList的数据遍历出来  
  36.                                 $.each(data.userList,function(index,user){  
  37.                                     toCompName.append("<option value='" + user.name + "'>"   
  38.                                     + user.name + "</option>");  
  39.                                 });  
  40.                             }else{  
  41.                                 alert("获取被投诉人列表失败!");  
  42.                             }  
  43.                         }else{  
  44.                             alert("获取被投诉人列表失败!");  
  45.                         }  
  46.                     },  
  47.                     error:function(){alert("获取被投诉人列表失败!");}  
  48.                 });  
  49.             }else{  
  50.                 //情空被投诉人列表下拉框  
  51.                 $("#toCompName").empty();  
  52.             }  
  53.         }  
  54.     </script>  
  55.       
  56. </head>  
  57. <body>  
  58. <form id="form" name="form" action="" method="post" enctype="multipart/form-data">  
  59.     <div class="vp_d_1">  
  60.         <div style="width:1%;float:left;">    </div>  
  61.         <div class="vp_d_1_1">  
  62.             <div class="content_info">  
  63.     <div class="c_crumbs"><div><b></b><strong>工作主页</strong> - 我要投诉</div></div>  
  64.     <div class="tableH2">我要投诉</div>  
  65.     <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >  
  66.         <tr>  
  67.             <td class="tdBg" width="250px">投诉标题:</td>  
  68.             <td><s:textfield name="comp.compTitle"/></td>  
  69.         </tr>  
  70.         <tr>  
  71.             <td class="tdBg">被投诉人部门:</td>  
  72.             <td><s:select id="toCompDept" name="comp.toCompDept" list="#{'':'请选择','部门A':'部门A','部门B':'部门B' }" onchange="doSelectDept()"/></td>  
  73.         </tr>  
  74.         <tr>  
  75.             <td class="tdBg">被投诉人姓名:</td>  
  76.             <td>  
  77.                 <select id="toCompName" name="comp.toCompName">  
  78.                 </select>  
  79.             </td>  
  80.         </tr>  
  81.         <tr>  
  82.             <td class="tdBg">投诉内容:</td>  
  83.             <td><s:textarea id="editor" name="comp.compContent" cssStyle="width:90%;height:160px;" /></td>  
  84.         </tr>  
  85.          <tr>  
  86.             <td class="tdBg">是否匿名投诉:</td>  
  87.             <td><s:radio name="comp.isNm" list="#{'false':'非匿名投诉','true':'匿名投诉' }" value="true"/></td>  
  88.         </tr>  
  89.          
  90.     </table>  
  91.     <s:hidden name="comp.compCompany" value="%{#session.SYS_USER.dept}"/>  
  92.     <s:hidden name="comp.compName" value="%{#session.SYS_USER.name}"/>  
  93.     <s:hidden name="comp.compMoblie" value="%{#session.SYS_USER.moblie}"/>  
  94.     <div class="tc mt20">  
  95.         <input type="button" class="btnB2" value="保存" />  
  96.               
  97.         <input type="button"  onclick="javascript:window.close()" class="btnB2" value="关闭" />  
  98.     </div>  
  99.     </div></div>  
  100.     <div style="width:1%;float:left;">    </div>  
  101.     </div>  
  102. </form>  
  103. </body>  
  104. </html>  

我们给“保存”announce添加一个onclick事件:
[html]  view plain copy
  1. <input type="button" class="btnB2" value="保存" onclick="doSubmit()"/>  

然后在<script></script>中完成onclick的doSubmit()方法:
[javascript]  view plain copy
  1. //提交表单  
  2. function doSubmit(){  
  3.     //1.提交表单并保存  
  4.     $.ajax({  
  5.         url:"${basePath}sys/home_complainAdd.action",  
  6.         data:$("#form").serialize(),  
  7.         type:"post",  
  8.         async:false,  
  9.         success:function (msg){  
  10.             if("success" == msg){  
  11.             //2.提示用户投诉成功  
  12.             alert("投诉成功!");  
  13.             //3.刷新父窗口  
  14.             window.opener.parent.location.reload(true);  
  15.             //4.关闭当前窗口  
  16.             window.close();  
  17.             }else{  
  18.                 alert("投诉失败!");  
  19.             }  
  20.         },  
  21.         error:function(){alert("投诉失败!");}  
  22.     });  
  23. }  

由于我们是使用ajax保存我们的而投诉信息的,我们需要从页面上获取我们的标题属性内容、部门属性内容、投诉人属性内容、文本属性等,获取比较麻烦,我们使用$("#form").serialize()来获取整个页面的所有标签值。

(解释一下$("#form").serialize():
serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。
可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。

)

我们接下来在HomeAction添加complainAdd方法来完成投诉信息的添加:
[java]  view plain copy
  1. //注入complainService  
  2. @Resource  
  3. private ComplainService complainService;  
  4. //投诉信息的包装对象  
  5. private Complain comp;  
  6.   
  7.   
  8. public Complain getComp() {  
  9.     return comp;  
  10. }  
  11.   
  12.   
  13. public void setComp(Complain comp) {  
  14.     this.comp = comp;  
  15. }  
  16. //保存投诉信息  
  17. public void complainAdd(){  
  18.     try {  
  19.         if (comp != null) {  
  20.             //设置默认投诉状态为待受理  
  21.             comp.setState(Complain.COMPLAIN_STATE_UNDONE);  
  22.             comp.setCompTime(new Timestamp(new Date().getTime()));  
  23.             complainService.save(comp);  
  24.   
  25.   
  26.             //输出投诉结果  
  27.             HttpServletResponse response = ServletActionContext  
  28.                     .getResponse();  
  29.             response.setContentType("text/html");  
  30.             ServletOutputStream outputStream = response.getOutputStream();  
  31.             outputStream.write("success".getBytes("utf-8"));  
  32.             outputStream.close();  
  33.         }  
  34.     } catch (Exception e) {  
  35.         e.printStackTrace();  
  36.     }  
  37. }  

我们来测一下我们的投诉信息保存是否能成功:

首先输入各种我们的投诉信息,然后点击保存:


首先会看到弹出一个对话框:


然后点击“确定”之后,我们的投诉信息编辑页面就会关闭,我们到“纳税服务”模块下的“投诉受理管理”功能下查看,发现我们的投诉信息已经成功保存:


点击“受理”,我们可以看到我们的投诉信息详细内容:


最后将之前我们一直嚷嚷的查询条件回显解决:
首先在我们的ComplainAction中添加下面属性:
[java]  view plain copy
  1. private String strTitle;  
  2. private String strState;  
  3.   
  4. public String getStrTitle() {  
  5.     return strTitle;  
  6. }  
  7.   
  8. public void setStrTitle(String strTitle) {  
  9.     this.strTitle = strTitle;  
  10. }  
  11.   
  12. public String getStrState() {  
  13.     return strState;  
  14. }  
  15.   
  16. public void setStrState(String strState) {  
  17.     this.strState = strState;  
  18. }  

在dealUI中防止这两个条件被覆盖:
[java]  view plain copy
  1. public String dealUI(){  
  2.     //加载状态集合  
  3.     ActionContext.getContext().getContextMap().put("complainStateMap", Complain.COMPLAIN_STATE_MAP);  
  4.     if(complain!=null){  
  5.         strTitle=complain.getCompTitle();  
  6.         strState=complain.getState();  
  7.         complain=complainService.findObjectById(complain.getCompId());  
  8.     }  
  9.     return "dealUI";  
  10. }  

然后在dealUI.jsp中加入隐藏值:
[html]  view plain copy
  1. <s:hidden name="complain.compId"/>  
  2. <s:hidden name="strTitle"/>  
  3. <s:hidden name="strState"/>  
  4. <s:hidden name="startTime"/>  
  5. <s:hidden name="endTime"/>  
  6. <s:hidden name="pageNo"/>  

然后在complain-struts.xml配置文件的Action重定向跳转中添加这些参数:
[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5. <struts>  
  6.     <package name="complain-action" namespace="/tax" extends="base-default">  
  7.         <action name="complain_*" class="cn.edu.hpu.tax.complain.action.ComplainAction" method="{1}">  
  8.             <result name="{1}">/WEB-INF/jsp/tax/complain/{1}.jsp</result>  
  9.             <result name="list" type="redirectAction">  
  10.                 <param name="actionName">complain_listUI</param>  
  11.                 <param name="complain.compTitle">${strTitle}</param>  
  12.                 <param name="complain.state">${strState}</param>  
  13.                 <param name="startTime">${startTime}</param>  
  14.                 <param name="endTime">${endTime}</param>  
  15.                 <param name="pageNo">${pageNo}</param>  
  16.                 <param name="encode">true</param><!-- 需要编码 -->  
  17.             </result>  
  18.         </action>  
  19.     </package>  
  20. </struts>  

我们的回显功能就完成了。同样保留了我们分页的当前页面(分页的其他功能我们已经在BaseAction中完成了,而且我们的ComplainAction、也已经继承了BaseAction)。

测试,我们搜索“问题”:

一共有7条测试数据,然后我们翻到第二页,对第二页第一条进行受理


跳转至受理页面后,我们随便填写一下回复,然后点击保存



之后我们重新跳转回界面,发现我们的查询条件以及当前页数都在


至此我们的分页以及查询条件状态回显的工作完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值