投诉举报项目中树形结构的应用

   树形结构,大家在资源管理器中都是常使用的。项目中单位的数据存储结构是树形的,上级单位包含很多下级单位,下级单位也同样包含多个下下级单位,当让用户选择时以树形页面呈现显然更方便。


效果图:



实现思路:

   使用了zTree-JQuery树插件。关于zTree树的学习只要在百度中输入zTree,它的一系列资料都出现了。使用zTree的核心就是会使用zTree(setting,[zTreeNodes])这个函数,它的返回值就是zTreePlugin. 这个函数接受一个 JSON 格式的数据对象 setting 和 一个 JSON 格式的数据对象 zTreeNodes,从而建立 Tree。我们实现树形就是通过后台查询出数据库中的单位数据,然后转为Json格式作为参数传入该函数,返回zTreePlugin显示到页面相应的区域中。当然zTree很多属性可以做出不同风格的Tree,有兴趣的可以去官网学习。zTree学习网


核心代码:

页面代码:

@*引入zTree的js文件,可下载得到*@
<link href="../../Content/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/zTree/jquery.ztree.core-3.5.js" type="text/javascript"></script>
<script src="../../Scripts/zTree/jquery.ztree.excheck-3.5.js" type="text/javascript"></script>
@*引入实现本功能的js文件*@
<script src="../../Scripts/zTree/unitTree.js" type="text/javascript"></script>
<h2>Tree</h2>
<div id="dlg" class="easyui-dialog" title="Toolbar and Buttons" style="width: 400px;
    height: 200px; padding: 10px" data-options="
                iconCls: 'icon-save',
                buttons: [{
                    text:'Ok',
                    iconCls:'icon-ok',
                    handler:dialog_OK
                },{
                    text:'Cancel',
                    handler:dialog_Cancel
                }]
            ">
    <table border="0" height="100px" align="left">
        <tr>
            <td width="60px" align="left" valign="top" style="border-right: #999999 0px dashed">
                <ul <span style="color:#ffffff;background-color: rgb(255, 0, 0);">id="tree"</span> class="ztree" style="width: 160px; overflow: auto;">
                </ul>
            </td>
            <td >
                <select id="comboPeople" multiple="multiple" style="width:100px;height:100px">
                    
                </select>
            </td>
        </tr>
    </table>
</div>

UnitTree.js文件:

var tree = {

    /**
    * 所有的初始化的操作
    */
    pFunction: {
        zTree: '',
        setting:
        {
            callback: {
		        onClick: zTreeOnClick
	        },
            check: {
                enable: true,
                chkboxType: { "Y": "", "N": "" }
            },
            data:
            {
                key:
                {
                    name: "UnitName"
                },
                simpleData: 
                {
					enable: true,
                    idKey:"UnitID",
                    pIdKey: "pid",
                    rootPId:"0"
				}
			}

        },

       
        //加载单位
        loadTree: function () {
            $.post("/Test/getAllUnit", null, function (unitInfo) {
                $.fn.zTree.init(<span style="background-color: rgb(255, 102, 102);"><span style="color:#ffffff;">$("#tree")</span></span>, tree.pFunction.setting, unitInfo);
            });
        }

    }
};

$().ready(function () {
    tree.pFunction.loadTree();
    //tree.init.initEvent();
});
Controller里面的代码:

       public ActionResult getAllUnit()
        {
            UserEntity e = CacheHelper.Get("User") as UserEntity;
            Collections.AnJianLuRu.UnitEntityCollection units = unitmanager.LoadAll(); 
            for (int enNum = 0; enNum < units.Count; ++enNum)
            {
                units[enNum].UserEntities = null;
                //caseHandleCollection[enNum].CaseInputInfoEntity= null;
            }

            var ltUnit = units.Select
                 (
                 p => new
                 {
                    p.ID,
                    p.FlowID,
                    p.Level,
                    p.pid,
                    p.UnitID,
                    p.UnitName,
                    p.UserEntities,

                    Timestamp = p.Timestamp.ToString("yyyy-mm-dd"),
                 }
                 ).ToList();
            var unitInfo = this.JsonFormat(   //将查询到的数据转为Json格式
                ltUnit
                );
            return unitInfo;
        }
代码中两次地方以红色标出,说明了生成的树显示在view中的响应位置。


总结:

    很多东西我们都要学会站在巨人的肩膀上。这是一种思想应该变为一种潜意识。开始时听说要加一棵树上去,我自己就想着这得多难啊。殊不知别人已经帮你做好了,去学去用就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
好的,下面是一个简单的投诉举报系统的 Java Web 代码示例,供参考: 1. 创建数据库表 首先,我们需要创建一个数据库表,用于存储用户提交的投诉信息。以下是一个简单的投诉表结构: ```sql CREATE TABLE `complaints` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL COMMENT '投诉人姓名', `phone` varchar(20) NOT NULL COMMENT '投诉人电话', `email` varchar(50) DEFAULT NULL COMMENT '投诉人邮箱', `content` varchar(255) NOT NULL COMMENT '投诉内容', `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '处理状态,0-未处理,1-已处理', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='投诉举报表'; ``` 2. 创建 JavaBean 我们需要创建一个 Complaint 实体类,用于封装投诉信息。 ```java public class Complaint { private int id; private String name; private String phone; private String email; private String content; private int status; private Date createTime; // 省略 getter 和 setter 方法 } ``` 3. 创建 DAO 类 我们需要创建一个 ComplaintDao 类,用于与数据库进行交互。 ```java public class ComplaintDao { private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/complaints_db?useSSL=false"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; // 添加投诉信息 public void addComplaint(Complaint complaint) { Connection conn = null; PreparedStatement pstmt = null; try { Class.forName(DRIVER_CLASS); conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql = "INSERT INTO complaints (name, phone, email, content, status, create_time) VALUES (?, ?, ?, ?, ?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, complaint.getName()); pstmt.setString(2, complaint.getPhone()); pstmt.setString(3, complaint.getEmail()); pstmt.setString(4, complaint.getContent()); pstmt.setInt(5, complaint.getStatus()); pstmt.setTimestamp(6, new Timestamp(complaint.getCreateTime().getTime())); pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } // 查询所有投诉信息 public List<Complaint> getAllComplaints() { List<Complaint> list = new ArrayList<>(); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class.forName(DRIVER_CLASS); conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql = "SELECT * FROM complaints"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String phone = rs.getString("phone"); String email = rs.getString("email"); String content = rs.getString("content"); int status = rs.getInt("status"); Date createTime = rs.getTimestamp("create_time"); Complaint complaint = new Complaint(); complaint.setId(id); complaint.setName(name); complaint.setPhone(phone); complaint.setEmail(email); complaint.setContent(content); complaint.setStatus(status); complaint.setCreateTime(createTime); list.add(complaint); } } catch (Exception e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return list; } } ``` 4. 创建 Servlet 类 我们需要创建一个 ComplaintServlet 类,用于接收用户提交的投诉信息,并将其保存到数据库。同时,该类还需要实现查询所有投诉信息的功能。 ```java @WebServlet("/complaint") public class ComplaintServlet extends HttpServlet { private ComplaintDao dao = new ComplaintDao(); @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); String name = req.getParameter("name"); String phone = req.getParameter("phone"); String email = req.getParameter("email"); String content = req.getParameter("content"); int status = 0; Date createTime = new Date(); Complaint complaint = new Complaint(); complaint.setName(name); complaint.setPhone(phone); complaint.setEmail(email); complaint.setContent(content); complaint.setStatus(status); complaint.setCreateTime(createTime); dao.addComplaint(complaint); resp.sendRedirect(req.getContextPath() + "/list.jsp"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List<Complaint> list = dao.getAllComplaints(); req.setAttribute("list", list); req.getRequestDispatcher("/list.jsp").forward(req, resp); } } ``` 5. 创建 JSP 页面 我们需要创建一个 list.jsp 页面,用于展示所有投诉信息。以下是一个简单的页面示例: ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>投诉举报列表</title> </head> <body> <h1>投诉举报列表</h1> <table border="1"> <thead> <tr> <th>ID</th> <th>投诉人</th> <th>联系电话</th> <th>联系邮箱</th> <th>投诉内容</th> <th>处理状态</th> <th>创建时间</th> </tr> </thead> <tbody> <c:forEach items="${list}" var="complaint"> <tr> <td>${complaint.id}</td> <td>${complaint.name}</td> <td>${complaint.phone}</td> <td>${complaint.email}</td> <td>${complaint.content}</td> <td>${complaint.status == 0 ? '未处理' : '已处理'}</td> <td>${complaint.createTime}</td> </tr> </c:forEach> </tbody> </table> <hr> <h2>我要投诉</h2> <form action="${pageContext.request.contextPath}/complaint" method="POST"> <table> <tr> <td>姓名:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>联系电话:</td> <td><input type="text" name="phone"></td> </tr> <tr> <td>联系邮箱:</td> <td><input type="text" name="email"></td> </tr> <tr> <td>投诉内容:</td> <td><textarea name="content"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="提交"></td> </tr> </table> </form> </body> </html> ``` 以上就是一个简单的投诉举报系统的 Java Web 代码示例。该示例仅供参考,实际开发还需要根据具体需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值