关于easyui的使用

主要用于Java的CRUD操作

两种写法:

第一种:全部写在一个页面,即时刷新效果比较容易实现。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <SCRIPT type="text/javascript" src="js/easyui/jquery.easyui.min.1.2.2.js"></SCRIPT>
    <script type="text/javascript" src="js/easyui/locale/easyui-lang-zh_CN.js"></script>
    <!-- ajax form提交 -->
    <script type="text/javascript" src="js/jquery.form.min.js"></script>
    <!-- 系统自定义的脚本 -->
    <script type="text/javascript" src="js/custom.jquery.form.js"></script>
    <script type="text/javascript" src="js/custom.box.main.js"></script>
    <script type="text/javascript" src="js/jquery.ajax.custom.extend.js"></script>

    <!-- 首页菜单加载 -->
    <SCRIPT type="text/javascript" src="js/menuload.js"></SCRIPT>
    <!-- 日期组件 -->
    <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script>
    <!-- 表单校验 -->
    <script src="js/jqueryvalidator/formValidator-4.1.3.js" type="text/javascript" charset="UTF-8"></script>
    <script src="js/jqueryvalidator/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>
    <!-- 系统提供的 -->
    <link rel="stylesheet" href="styles/style.css"/>
    <!-- easyui的 -->
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/default/easyui.css"/>
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/icon.css">
    <!-- 日期组件的 -->
    <link rel="stylesheet" href="js/My97DatePicker/skin/WdatePicker.css" type="text/css"/>
    <!-- 表单校验的 -->
    <link rel="stylesheet" href="js/formvalidator/style/validator.css"/>
    <script type="text/javascript">
        var url;

        function deleteUser() {
            var selectedRows = $("#dg").datagrid('getSelections');
            if (selectedRows.length == 0) {
                $.messager.alert("系统提示", "请选择要删除的数据!");
                return;
            }
            var delNames = [];

            for (var i = 0; i < selectedRows.length; i++) {
                delNames.push(selectedRows[i].userName);
            }
            var names = delNames.join(",");
            //alert(names);
            $.messager.confirm("系统提示", "您确认要删掉这<font color=red>" + selectedRows.length + "</font>条数据吗?", function (r) {
                if (r) {


                    $.post("../DeleteUserServlet?oop=1", {delName: names}, function (result) {
                        //alert(result);
                        //var s = eval('('+result+')');

                        alert(result.success);
                        if (result.success == "true") {

                            $.messager.alert("系统提示", "您已成功删除<font color=red>" + result.delNums + "</font>条数据!");
                            $("#dg").datagrid("reload");
                        } else {
                            $.messager.alert('系统提示', result.errorMsg);
                        }
                    }, "json");
                }
            });
        }

        function searchUser() {
            $('#dg').datagrid('load', {
                userName: $('#s_userName').val(),
                passWord: $('#s_passWord').val(),
                actualName: $('#s_actualName').val(),
                email: $('#s_email').val(),
                mobile: $('#s_mobile').val(),
                address: $('#s_address').val(),
                sex: $('#s_sex').combobox("getValue"),
            });
        }


        function openUserAddDialog() {
            $("#dlg").dialog("open").dialog("setTitle", "添加用户信息");
            url = "../RegisterServlet?oop=1";
        }

        function saveUser() {
            $("#fm").form("submit", {
                url: url,
                onSubmit: function () {
                    if ($('#sex').combobox("getValue") == "") {
                        $.messager.alert("系统提示", "请选择性别");
                        return false;
                    }
                    return $(this).form("validate");
                },
                success: function (result) {
                    //alert(result);
                    var s = eval('(' + result + ')');
                    //JSON ->ARRAY
                    //alert(s.success);
                    if (s.errorMsg == "保存失败") {

                        $.messager.alert("系统提示", s.errorMsg);
                        return;
                    } else {
                        $.messager.alert("系统提示", "保存成功");
                        resetValue();
                        $("#dlg").dialog("close");
                        $("#dg").datagrid("reload");
                    }
                }
            });
        }

        function resetValue() {
            $("#userName").val("");
            $("#passWord").val("");
            $("#actualName").val("");
            $("#email").val("");
            $("#mobile").val("");
            $("#address").val("");
            $("#sex").combobox("setValue", "");
            $("#status").val("");
            $('#userName').attr('disabled', false);
        }

        function closeUserDialog() {
            $("#dlg").dialog("close");
            resetValue();
        }

        function openUserModifyDialog() {
            var selectedRows = $("#dg").datagrid('getSelections');
            if (selectedRows.length != 1) {
                $.messager.alert("系统提示", "请选择一条要编辑的数据!");
                return;
            }
            /* $("#userName").validatebox('disabled',true); readonly*/
            $('#userName').attr('disabled', true);//用户名不能修改
            var row = selectedRows[0];
            $("#dlg").dialog("open").dialog("setTitle", "编辑用户信息");
            $("#fm").form("load", row);
            url = "../ModifyUserServlet?oop=1&userName=" + row.userName;
        }
    </script>
</head>
<body style="margin: 5px;">
<div id="tb">
    <div>
        <a href="javascript:openUserAddDialog()" class="easyui-linkbutton" iconCls="icon-add" plain="true">添加</a>
        <a href="javascript:openUserModifyDialog()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a>
        <a href="javascript:deleteUser()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">删除</a>
    </div>
    <div>
        &nbsp;用户名:&nbsp;<input type="text" name="s_userName" id="s_userName" size="10"/>
        &nbsp;真实姓名:&nbsp;<input type="text" name="s_actualName" id="s_actualName" size="10"/>
        &nbsp;性别:&nbsp;<select class="easyui-combobox" id="s_sex" name="s_sex" editable="false" panelHeight="auto">
        <option value="">请选择...</option>
        <option value="男">男</option>
        <option value="女">女</option>
    </select>
        &nbsp;Email:&nbsp;<input type="text" name="s_email" id="s_email" size="10"/>
        &nbsp;电话:&nbsp;<input type="text" name="s_mobile" id="s_mobile" size="10"/>
        &nbsp;地址:&nbsp;<input type="text" name="s_address" id="s_address" size="10"/>


        <a href="javascript:searchUser()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a></div>
</div>
<table id="dg" title="用户信息" class="easyui-datagrid" fitColumns="true"
       pagination="true" rownumbers="true" url="http://localhost:8888/shopping/user?action=findAll" fit="true"
       toolbar="#tb">
    <thead>
    <tr>
        <th field="cb" checkbox="true"></th>
        <th field="userName" width="100" align="center">用户名</th>
        <th field="actualName" width="100" align="center">真实姓名</th>
        <th field="passWord" width="100" align="center">密码</th>
        <th field="sex" width="100" align="center">性别</th>
        <th field="email" width="100" align="center">Email</th>
        <th field="mobile" width="100" align="center">手机</th>
        <th field="address" width="100" align="center">地址</th>
        <th field="status" width="50" align="center">权限</th>
    </tr>
    </thead>
</table>


<div id="dlg" class="easyui-dialog" style="width: 570px;height: 350px;padding: 10px 20px"
     closed="true" buttons="#dlg-buttons">
    <form id="fm" method="post">
        <table cellspacing="5px;">
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="userName" id="userName" class="easyui-validatebox" required="true"/></td>
                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td>真实姓名:</td>
                <td><input type="text" name="actualName" id="actualName" class="easyui-validatebox" required="true"/>
                </td>

            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="passWord" id="passWord" class="easyui-validatebox" required="true"/>
                </td>
                <td></td>
                <td>性别:</td>
                <td><select class="easyui-combobox" id="sex" name="sex" editable="false" panelHeight="auto"
                            style="width: 155px">
                    <option value="">请选择...</option>
                    <option value="男">男</option>
                    <option value="女">女</option>
                </select></td>
            </tr>
            <tr>
                <td>手机号:</td>
                <td><input type="text" name="mobile" id="mobile" class="easyui-numberbox" required="true"/></td>
                <td></td>
                <td>Email:</td>
                <td><input type="text" name="email" id="email" class="easyui-validatebox" required="true"
                           validType="email"/></td>
            </tr>
            <tr>
                <td valign="top">送货地址:</td>
                <td colspan="4"><textarea rows="7" cols="50" name="address" id="address"></textarea></td>
            </tr>
        </table>
    </form>


    <div id="dlg-buttons">
        <a href="javascript:saveUser()" class="easyui-linkbutton" iconCls="icon-ok">保存</a>
        <a href="javascript:closeUserDialog()" class="easyui-linkbutton" iconCls="icon-cancel">关闭</a>
    </div>
</div>
</body>
</html>

第二种:添加和修改写在不同的页面,前后端分开写。

后台的前台

后台的后台

前台index.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <SCRIPT type="text/javascript" src="js/easyui/jquery.easyui.min.1.2.2.js"></SCRIPT>
    <script type="text/javascript" src="js/easyui/locale/easyui-lang-zh_CN.js"></script>
    <!-- ajax form提交 -->
    <script type="text/javascript" src="js/jquery.form.min.js"></script>
    <!-- 系统自定义的脚本 -->
    <script type="text/javascript" src="js/custom.jquery.form.js"></script>
    <script type="text/javascript" src="js/custom.box.main.js"></script>
    <script type="text/javascript" src="js/jquery.ajax.custom.extend.js"></script>

    <!-- 首页菜单加载 -->
    <SCRIPT type="text/javascript" src="js/menuload.js"></SCRIPT>
    <!-- 日期组件 -->
    <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script>
    <!-- 表单校验 -->
    <script src="js/jqueryvalidator/formValidator-4.1.3.js" type="text/javascript" charset="UTF-8"></script>
    <script src="js/jqueryvalidator/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>
    <!-- 系统提供的 -->
    <link rel="stylesheet" href="styles/style.css"/>
    <!-- easyui的 -->
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/default/easyui.css"/>
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/icon.css">
    <!-- 日期组件的 -->
    <link rel="stylesheet" href="js/My97DatePicker/skin/WdatePicker.css" type="text/css"/>
    <!-- 表单校验的 -->
    <link rel="stylesheet" href="js/formvalidator/style/validator.css"/>

</head>
<body class="easyui-layout">
<div region="north" border="false" style="height:60px;background:#B3DFDA;">north region</div>
<div region="west" split="true" title="West" style="width:150px;padding:10px">
    <DIV id="nav" class="easyui-accordion" border="false" fit="true">
        <!--  导航内容 -->
    </DIV>
</div>
<div region="south" border="false" style="height:50px;background:#A9FACD;padding:10px;">south region</div>
<div region="center" title="Main Title">
    <DIV id="tabs" class="easyui-tabs" border="false" fit="true"></DIV>

</div>

<script type="text/javascript">
    var _menus;//菜单
    $(function () {
        var p = $('body').layout('panel', 'west').panel({
            //折叠时触发的事件
            onCollapse: function () {
                alert('collapse');
            }
        });
        //异步请求
        $.ajax({
            url: 'menu.json',
            type: 'POST',
            dataType: 'json',
            success: function (data) {
                _menus = data;
                initMenu(_menus);
            },
            error: function () {
                alert('菜单加载异常');
            }
        })

    })
</script>
</body>
</html>

前台user.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <SCRIPT type="text/javascript" src="js/easyui/jquery.easyui.min.1.2.2.js"></SCRIPT>
    <script type="text/javascript" src="js/easyui/locale/easyui-lang-zh_CN.js"></script>
    <!-- ajax form提交 -->
    <script type="text/javascript" src="js/jquery.form.min.js"></script>
    <!-- 系统自定义的脚本 -->
    <script type="text/javascript" src="js/custom.jquery.form.js"></script>
    <script type="text/javascript" src="js/custom.box.main.js"></script>
    <script type="text/javascript" src="js/jquery.ajax.custom.extend.js"></script>

    <!-- 首页菜单加载 -->
    <SCRIPT type="text/javascript" src="js/menuload.js"></SCRIPT>
    <!-- 日期组件 -->
    <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script>
    <!-- 表单校验 -->
    <script src="js/jqueryvalidator/formValidator-4.1.3.js" type="text/javascript" charset="UTF-8"></script>
    <script src="js/jqueryvalidator/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>
    <!-- 系统提供的 -->
    <link rel="stylesheet" href="styles/style.css"/>
    <!-- easyui的 -->
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/default/easyui.css"/>
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/icon.css">
    <!-- 日期组件的 -->
    <link rel="stylesheet" href="js/My97DatePicker/skin/WdatePicker.css" type="text/css"/>
    <!-- 表单校验的 -->
    <link rel="stylesheet" href="js/formvalidator/style/validator.css"/>
</head>
<body>

<div class="easyui-accordion" style="height: auto;">
    <div title="操作栏" data-options="" style="overflow: auto; padding: 10px;">
        <!-- html的静态布局 -->
        <form id="userForm">
            <!-- 查询条件 -->
            <TABLE class="table_search">
                <TBODY>
                <TR>
                    <TD class="left">用户账号:</td>
                    <td><INPUT type="text" name="id"/></TD>
                    <TD class="left">用户名称:</TD>
                    <td><INPUT type="text" name="userName"/></TD>

                    <TD class="left">登录名:</TD>
                    <td><INPUT type="text" name="loginName"/></TD>
                    <TD class="left">性别类型:</TD>
                    <td><select name="sex">
                        <option value="">请选择</option>
                        <option value="1">男</option>
                        <option value="0">女</option>


                    </select></TD>
                    <td><a id="btn" href="#" onclick="queryuser()"
                           class="easyui-linkbutton" iconCls='icon-search'>查询</a></td>
                </TR>


                </TBODY>
            </TABLE>

            <!-- 查询列表 -->
            <TABLE border=0 cellSpacing=0 cellPadding=0 width="99%" align=center>
                <TBODY>
                <TR>
                    <TD>
                        <table id="user" width="100%"></table>
                    </TD>
                </TR>
                </TBODY>
            </TABLE>
        </form>
    </div>

</div>


<script type="text/javascript">

    var columns_v = [[
        {field: 'id', title: '编号', width: 40},
        {field: 'loginName', title: '登录名', width: 100, align: 'right'},
        {field: 'userName', title: '用户名', width: 100},
        {field: 'password', title: '密码', width: 220},
        {field: 'email', title: '邮箱', width: 120},
        {field: 'mobile', title: '手机号', width: 100},
        {field: 'identityCode', title: '身份证', width: 200},
        {
            field: 'sex', title: '性别', width: 100,
            formatter: function (value, row, index) {//通过此方法格式化显示内容,value表示从json中取出该单元格的值,row表示这一行的数据,是一个对象,index:行的序号
                if (value == '1') {
                    return "男";
                } else if (value == '0') {
                    return "女";
                }
            }
        },
        {
            field: 'type', title: '类型', width: 60,
            formatter: function (value, row, index) {//通过此方法格式化显示内容,value表示从json中取出该单元格的值,row表示这一行的数据,是一个对象,index:行的序号
                if (value == '0') {
                    return "前台";
                } else if (value == '1') {
                    return "后台";
                }
            }
        },
        {
            field: 'opt1',
            title: '删除',
            width: 40,
            formatter: function (value, row, index) {
                return "<a href=javascript:deleteuser('" + row.id + "')>删除</a>";
            }
        }, {
            field: 'opt2',
            title: '修改',
            width: 40,
            formatter: function (value, row, index) {
                return "<a href=javascript:edituser('" + row.id + "')>修改</a>";
            }
        }

    ]]

    // 定义datagird工具
    var toolbar_v = [{//工具栏
        id: 'btnadd',
        text: '添加',
        iconCls: 'icon-add',
        handler: function () {
            //打开一个窗口,用户添加页面
            //alert("0000");
            //参数:窗口的title、宽、高、url地址
            createmodalwindow("添加用户信息", 850, 300, 'add_user.html');
        }
    }];

    //加载datagrid

    $(function () {
        $('#user').datagrid({
            title: '用户查询',//数据列表标题
            nowrap: true,//单元格中的数据不换行,如果为true表示不换行,不换行情况下数据加载性能高,如果为false就是换行,换行数据加载性能不高
            striped: true,//条纹显示效果
            url: 'http://localhost:8888/shopping/user?action=findAll',//加载数据的连接,引连接请求过来是json数据
            idField: 'id',//此字段很重要,数据结果集的唯一约束(重要),如果写错影响 获取当前选中行的方法执行
            loadMsg: '',
            columns: columns_v,
            pagination: true,//是否显示分页
            rownumbers: true,//是否显示行号
            pageList: [5, 10, 15],
            toolbar: toolbar_v
        });
    });

    //查询方法
    function queryuser() {
        //datagrid的方法load方法要求传入json数据,最终将 json转成key/value数据传入action
        //将form表单数据提取出来,组成一个json
        var formdata = $("#userForm").serializeJson();
        $('#user').datagrid('load', formdata);
    }

    //删除用户方法
    function deleteuser(id) {

        //第一个参数是提示信息,第二个参数,取消执行的函数指针,第三个参是,确定执行的函数指针
        _confirm('您确认删除吗?', null, function () {

            //将要删除的id赋值给deleteid,deleteid在sysuserdeleteform中
            $("#delete_id").val(id);
            //使用ajax的from提交执行删除
            //sysuserdeleteform:form的id,userdel_callback:删除回调函数,
            //第三个参数是url的参数
            //第四个参数是datatype,表示服务器返回的类型
            //jquerySubByFId('userForm', userdel_callback, null, "json");
            //ajax请求
            //ajax请求

            $.post("http://localhost:8888/shopping/user?action=delete", {'id': id}, function (result) {
                //查单个,
                console.log(result);
                message_alert(result);//取代了alert

            }, "json");


        });
    }

    //删除用户的回调
    function userdel_callback(data) {
        message_alert(data);
        //刷新 页面
        //在提交成功后重新加载 datagrid
        //取出提交结果
        var type = data.resultInfo.type;
        if (type == 1) {
            //成功结果
            //重新加载 datagrid
            queryuser();
        }
    }

    //修改用户
    function edituser(id) {

        //打开修改窗口
        createmodalwindow("修改用户信息", 850, 300, 'update_user.html?id=' + id);
    }
</script>


</body>
</html>

 

前台user_add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <SCRIPT type="text/javascript" src="js/easyui/jquery.easyui.min.1.2.2.js"></SCRIPT>
    <script type="text/javascript" src="js/easyui/locale/easyui-lang-zh_CN.js"></script>
    <!-- ajax form提交 -->
    <script type="text/javascript" src="js/jquery.form.min.js"></script>
    <!-- 系统自定义的脚本 -->
    <script type="text/javascript" src="js/custom.jquery.form.js"></script>
    <script type="text/javascript" src="js/custom.box.main.js"></script>
    <script type="text/javascript" src="js/jquery.ajax.custom.extend.js"></script>

    <!-- 首页菜单加载 -->
    <SCRIPT type="text/javascript" src="js/menuload.js"></SCRIPT>
    <!-- 日期组件 -->
    <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script>
    <!-- 表单校验 -->
    <script src="js/jqueryvalidator/formValidator-4.1.3.js" type="text/javascript" charset="UTF-8"></script>
    <script src="js/jqueryvalidator/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>
    <!-- 系统提供的 -->
    <link rel="stylesheet" href="styles/style.css"/>
    <!-- easyui的 -->
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/default/easyui.css"/>
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/icon.css">
    <!-- 日期组件的 -->
    <link rel="stylesheet" href="js/My97DatePicker/skin/WdatePicker.css" type="text/css"/>
    <!-- 表单校验的 -->
    <link rel="stylesheet" href="js/formvalidator/style/validator.css"/>
    <script type="text/javascript">
        function sysusersave() {
            //准备使用jquery 提供的ajax Form提交方式
            //将form的id传入,方法自动将form中的数据组成成key/value数据,通过ajax提交,提交方法类型为form中定义的method,
            //使用ajax form提交时,不用指定url,url就是form中定义的action
            //此种方式和原始的post方式差不多,只不过使用了ajax方式

            //第一个参数:form的id
            //第二个参数:sysusersave_callback是回调函数,sysusersave_callback当成一个方法的指针
            //第三个参数:传入的参数, 可以为空
            //第四个参数:dataType预期服务器返回的数据类型,这里action返回json
            //根据form的id找到该form的action地址
            jquerySubByFId('userform', sysusersave_callback, null, "json"); //手动提交表单
        }

        //ajax调用的回调函数,ajax请求完成调用此函数,传入的参数是action返回的结果
        function sysusersave_callback(data) {
            //alert(data);
            message_alert(data);
            setTimeout("parent.closemodalwindow()", 1000);//异步操作,一般进行延时处理


            // alert(data.message);
            /* if(data.type=='0'){
                $.messager.alert('提示信息',data.message,'success');
            }else{
                $.messager.alert('提示信息',data.message,'error');
            } */

            //action返回的是json数据
            //如果是成功显示一个对号

            //如果是错误信息

            //提交结果类型
            //data中存放的是action返回Resultinfo,有一个type
            /* var type=data.resultInfo.type;
            //结果提示信息
            var message=data.resultInfo.message;
            //alert(message);
            if(type==0){
                //如果type等于0表示失败,调用 jquery easyui的信息提示组件
                $.messager.alert('提示信息',message,'error');
            }else if(type==1){
                $.messager.alert('提示信息',message,'success');
            }else if(type==2){
                $.messager.alert('提示信息',message,'warning');
            }else if(type==3){
                $.messager.alert('提示信息',message,'info');
            }
           */


        }

    </script>
</head>
<body>


<form id="userform" action="http://localhost:8888/shopping/user?action=add" method="post">
    <TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" bgColor=#c4d8ed>

        <TBODY>
        <TR>
            <TD background=images/r_0.gif width="100%">
                <TABLE cellSpacing=0 cellPadding=0 width="100%">
                    <TBODY>
                    <TR>
                        <TD>&nbsp;用户信息</TD>
                        <TD align=right>&nbsp;</TD>
                    </TR>
                    </TBODY>
                </TABLE>
            </TD>
        </TR>

        <TR>
            <TD>
                <TABLE class="toptable grid" border=1 cellSpacing=1 cellPadding=4
                       align=center>
                    <TBODY>

                    <TR>
                        <TD height=30 width="15%" align=right>登录名:</TD>
                        <TD class=category width="35%">
                            <div>
                                <input type="text" id="loginName" name="loginName"/>
                            </div>
                            <!-- sysuser_useridTip用于显示提示信息,提示div的id等于校验input的id+Tip -->
                            <div id="sysuser_useridTip"></div>
                        </TD>
                        <TD height=30 width="15%" align=right>用户名:</TD>
                        <TD class=category width="35%">
                            <div>
                                <input type="text" id="userName" name="userName"/>
                            </div>
                            <div id="sysuser_usernameTip"></div>
                        </TD>
                    </TR>
                    <TR>
                        <TD height=30 width="15%" align=right>用户密码:</TD>
                        <TD class=category width="35%">
                            <div>
                                <input type="password" id="password" name="password"/>
                            </div>
                            <div id="sysuser_passwordTip"></div>
                        </TD>
                        <TD height=30 width="15%" align=right>性别:</TD>
                        <TD class=category width="35%">
                            <div>
                                <select name="sex" id="sex">

                                    <option value="">请选择</option>
                                    <option value="1">男</option>
                                    <option value="0">女</option>


                                </select>
                            </div>
                            <div id="sysuser_groupidTip"></div>
                        </TD>


                    </TR>
                    <TR>
                        <TD height=30 width="15%" align=right>邮箱:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <input type="text" name="email" id="email"/>
                        </TD>
                        <TD height=30 width="15%" align=right>手机:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <input type="text" name="mobile" id="mobile"/>
                        </TD>

                    </TR>
                    <TR>
                        <TD height=30 width="15%" align=right>身份证号:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <input type="text" name="identityCode" id="identityCode"/>
                        </TD>
                        <TD height=30 width="15%" align=right>类型:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <select id="type" name="type">
                                <option value="">请选择</option>
                                <option value="0">前台</option>
                                <option value="1">后台</option>
                            </select>
                        </TD>

                    </TR>
                    <tr>
                        <td colspan=4 align=center class=category>
                            <a id="submitbtn" class="easyui-linkbutton" iconCls="icon-ok" href="#"
                               onclick="sysusersave()">提交</a>
                            <a id="closebtn" class="easyui-linkbutton" iconCls="icon-cancel" href="#"
                               onclick="parent.closemodalwindow()">关闭</a>
                        </td>
                    </tr>

                    </TBODY>
                </TABLE>
            </TD>
        </TR>
        </TBODY>
    </TABLE>
</form>
</body>
</html>

前台update_user.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <SCRIPT type="text/javascript" src="js/easyui/jquery.easyui.min.1.2.2.js"></SCRIPT>
    <script type="text/javascript" src="js/easyui/locale/easyui-lang-zh_CN.js"></script>
    <!-- ajax form提交 -->
    <script type="text/javascript" src="js/jquery.form.min.js"></script>
    <!-- 系统自定义的脚本 -->
    <script type="text/javascript" src="js/custom.jquery.form.js"></script>
    <script type="text/javascript" src="js/custom.box.main.js"></script>
    <script type="text/javascript" src="js/jquery.ajax.custom.extend.js"></script>

    <!-- 首页菜单加载 -->
    <SCRIPT type="text/javascript" src="js/menuload.js"></SCRIPT>
    <!-- 日期组件 -->
    <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script>
    <!-- 表单校验 -->
    <script src="js/jqueryvalidator/formValidator-4.1.3.js" type="text/javascript" charset="UTF-8"></script>
    <script src="js/jqueryvalidator/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>
    <!-- 系统提供的 -->
    <link rel="stylesheet" href="styles/style.css"/>
    <!-- easyui的 -->
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/default/easyui.css"/>
    <LINK rel="stylesheet" type="text/css" href="js/easyui/themes/icon.css">
    <!-- 日期组件的 -->
    <link rel="stylesheet" href="js/My97DatePicker/skin/WdatePicker.css" type="text/css"/>
    <!-- 表单校验的 -->
    <link rel="stylesheet" href="js/formvalidator/style/validator.css"/>
    <script type="text/javascript">
        var id;
        var url = window.location.search; //获取url中"?"符后的字串
        if (url.indexOf("?") != -1) {
            id = url.substr(url.indexOf("=") + 1);
        }
        console.log(id);

        //做回显(写一个页面多简单呀)
        function editValue(json) {
            $("#userName").val(json.userName);
            $("#password").val(json.password);
            $("#loginName").val(json.loginName);
            $("#email").val(json.email);
            $("#mobile").val(json.mobile);
            $("#identityCode").val(json.identityCode);
            $("#sex").combobox("setValue", String(json.sex == 1 ? "男" : json.sex == 0 ? "女" : "请选择"));
            $("#type").combobox("setValue", String(json.type == 0 ? "前台" : json.type == 1 ? "后台" : "请选择"));
            $("#id").val(json.id);
            //$('#id').attr('disabled', false); //不可编辑
        }

        //ajax请求
        $(function () {
            $.post("http://localhost:8888/shopping/user?action=findOne", {'id': id}, function (result) {
                //查单个,
                console.log(result);
                editValue(result);
            }, "json");
        })

        function userupdate() {
            //准备使用jquery 提供的ajax Form提交方式
            //将form的id传入,方法自动将form中的数据组成成key/value数据,通过ajax提交,提交方法类型为form中定义的method,
            //使用ajax form提交时,不用指定url,url就是form中定义的action
            //此种方式和原始的post方式差不多,只不过使用了ajax方式

            //第一个参数:form的id
            //第二个参数:sysusersave_callback是回调函数,sysusersave_callback当成一个方法的指针
            //第三个参数:传入的参数, 可以为空
            //第四个参数:dataType预期服务器返回的数据类型,这里action返回json
            //根据form的id找到该form的action地址
            jquerySubByFId('userform', sysusersave_callback, null, "json"); //手动提交表单
        }

        //ajax调用的回调函数,ajax请求完成调用此函数,传入的参数是action返回的结果
        function sysusersave_callback(data) {
            //alert(data);
            message_alert(data);

            setTimeout("parent.closemodalwindow()", 1000);


            // alert(data.message);
            /* if(data.type=='0'){
                $.messager.alert('提示信息',data.message,'success');
            }else{
                $.messager.alert('提示信息',data.message,'error');
            } */

            //action返回的是json数据
            //如果是成功显示一个对号

            //如果是错误信息

            //提交结果类型
            //data中存放的是action返回Resultinfo,有一个type
            /* var type=data.resultInfo.type;
            //结果提示信息
            var message=data.resultInfo.message;
            //alert(message);
            if(type==0){
                //如果type等于0表示失败,调用 jquery easyui的信息提示组件
                $.messager.alert('提示信息',message,'error');
            }else if(type==1){
                $.messager.alert('提示信息',message,'success');
            }else if(type==2){
                $.messager.alert('提示信息',message,'warning');
            }else if(type==3){
                $.messager.alert('提示信息',message,'info');
            }
           */


        }

    </script>
</head>
<body>


<form id="userform" action="http://localhost:8888/shopping/user?action=update" method="post">
    <TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" bgColor=#c4d8ed>

        <TBODY>
        <TR>
            <TD background=images/r_0.gif width="100%">
                <TABLE cellSpacing=0 cellPadding=0 width="100%">
                    <TBODY>
                    <TR>
                        <TD>&nbsp;用户信息</TD>
                        <TD align=right>&nbsp;</TD>
                    </TR>
                    </TBODY>
                </TABLE>
            </TD>
        </TR>

        <TR>
            <TD>
                <TABLE class="toptable grid" border=1 cellSpacing=1 cellPadding=4
                       align=center>
                    <TBODY>

                    <TR>
                        <TD height=30 width="15%" align=right>登录名:</TD>
                        <TD class=category width="35%">
                            <div>
                                <input type="hidden" id="id" name="id"/>
                                <input type="text" id="loginName" name="loginName"/>
                            </div>
                            <!-- sysuser_useridTip用于显示提示信息,提示div的id等于校验input的id+Tip -->
                            <div id="sysuser_useridTip"></div>
                        </TD>
                        <TD height=30 width="15%" align=right>用户名:</TD>
                        <TD class=category width="35%">
                            <div>
                                <input type="text" id="userName" name="userName"/>
                            </div>
                            <div id="sysuser_usernameTip"></div>
                        </TD>
                    </TR>
                    <TR>
                        <TD height=30 width="15%" align=right>用户密码:</TD>
                        <TD class=category width="35%">
                            <div>
                                <input type="password" id="password" name="password"/>
                            </div>
                            <div id="sysuser_passwordTip"></div>
                        </TD>
                        <TD height=30 width="15%" align=right>性别:</TD>
                        <TD class=category width="35%">
                            <div>
                                <select class="easyui-combobox" id="sex" name="sex"
                                        data-options="label:'性别:', width:300, required:true">
                                    <option value="请选择">请选择</option>
                                    <option value="1">男</option>
                                    <option value="0">女</option>
                                </select>
                            </div>
                            <div id="sysuser_groupidTip"></div>
                        </TD>


                    </TR>
                    <TR>
                        <TD height=30 width="15%" align=right>邮箱:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <input type="text" name="email" id="email"/>
                        </TD>
                        <TD height=30 width="15%" align=right>手机:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <input type="text" name="mobile" id="mobile"/>
                        </TD>

                    </TR>
                    <TR>
                        <TD height=30 width="15%" align=right>身份证号:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <input type="text" name="identityCode" id="identityCode"/>
                        </TD>
                        <TD height=30 width="15%" align=right>类型:</TD><!-- 用处:根据名称获取单位id -->
                        <TD class=category width="35%">
                            <select class="easyui-combobox" id="type" name="type"
                                    data-options="label:'类型:', width:300, required:true">
                                <option value="">请选择</option>
                                <option value="0">前台</option>
                                <option value="1">后台</option>
                            </select>
                        </TD>

                    </TR>
                    <tr>
                        <td colspan=4 align=center class=category>
                            <a id="submitbtn" class="easyui-linkbutton" iconCls="icon-ok" href="#"
                               onclick="userupdate()">提交</a>
                            <a id="closebtn" class="easyui-linkbutton" iconCls="icon-cancel" href="#"
                               onclick="parent.closemodalwindow()">关闭</a>
                        </td>
                    </tr>

                    </TBODY>
                </TABLE>
            </TD>
        </TR>
        </TBODY>
    </TABLE>
</form>

</body>
</html>

前台效果

添加效果

修改效果

删除效果

前台菜单json

{
  "menus": [
    {
      "icon": "icon-sys",
      "menuid": "1",
      "menuname": "系统管理",
      "url": "",
      "menus": [
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "用户管理",
          "url": "user.html"
        }
      ]
    },
    {
      "icon": "icon-sys",
      "menuid": "1",
      "menuname": "药品目录",
      "url": "",
      "menus": [
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "药品目录导出",
          "url": "/yycgproject/ypml/exportypxx.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "药品目录导 入",
          "url": "/yycgproject/ypml/importypxx.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "供货商药品目录维护",
          "url": "/yycgproject/ypml/querygysypml.action"
        }
      ]
    },
    {
      "icon": "icon-sys",
      "menuid": "1",
      "menuname": "采购单管理",
      "url": "",
      "menus": [
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "创建采购单",
          "url": "/yycgproject/cgd/addcgd.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "采购单维护",
          "url": "/yycgproject/cgd/querycgd.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "采购单审核",
          "url": "/yycgproject/cgd/querycheckcgd.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "采购单受理",
          "url": "/yycgproject/cgd/disposecgd.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "入库",
          "url": "/yycgproject/cgd/receivecgd.action"
        }
      ]
    },
    {
      "icon": "icon-sys",
      "menuid": "1",
      "menuname": "统计分析",
      "url": "",
      "menus": [
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "交易明细查询",
          "url": "/yycgproject/statistics/businesslist.action"
        },
        {
          "icon": "icon-log",
          "menuid": "1_1",
          "menuname": "按药品统计",
          "url": "/yycgproject/statistics/businessypxxsum.action"
        }
      ]
    }
  ]
}

前台的menuload.js

//打开标签窗口
var opentabwindow = function (tabTitle, url) {
    addTab(tabTitle, url, 'icon icon-null');
};
//菜单单击事件
var menuclick = function () {
    //var tabTitle = $(this).children('.nav').text();
    //获取二级菜单的title,数据从后台的menu.json中获取
    var tabTitle = $(this).attr("title");
    //获取二级菜单的url,rel是获取json数据时拼接成的html的一部分
    var url = $(this).attr("rel");
    var menuid = $(this).attr("ref");
    var icon = 'icon ' + $(this).attr("icon");
    addTab(tabTitle, url, icon);
    $('.easyui-accordion li div').removeClass("selected");
    $(this).parent().addClass("selected");
};

//将后台获取的json菜单数据,组织成html
function initMenu(menus_var) {

    $("#nav").accordion({animate: false});
    //循环处理json的菜单数据,组织成html
    $.each(menus_var.menus, function (i, n) {//外层循环处理一级菜单
        var menulist = '';
        menulist += '<ul>';
        $.each(n.menus, function (j, o) {//二层处理二级菜单
            //这里自定义了一些属性存放菜单的内容:title存放菜单名称rel存放菜单地址,这些在属性在点击菜单 时要取出值使用
            menulist += '<li><div><a title="' + o.menuname + '" ref="' + o.menuid + '" href="#" rel="' + o.url + '" icon="' + o.icon + '"  ><span class="icon ' + o.icon + '" >&nbsp;</span><span class="nav">' + o.menuname + '</span></a></div></li> ';
        });
        menulist += '</ul>';//生成了菜单的html
        //自动创建菜单
        $('#nav').accordion('add', {
            title: n.menuname,
            content: menulist,//二级菜单的内容
            iconCls: 'icon ' + n.icon
        });

    });

    //鼠标移动效果
    //指定a的点击事件是menuclick
    $('.easyui-accordion li a').click(menuclick).hover(function () {
        $(this).parent().addClass("hover");
    }, function () {
        $(this).parent().removeClass("hover");
    });

}


/**
 *
 * @param subtitle 标题
 * @param url 访问地址
 * @param icon 图标
 */
function addTab(subtitle, url, icon) {
    //如果指定标题的tab不存则添加一个新的
    if (!$('#tabs').tabs('exists', subtitle)) {
        $('#tabs').tabs('add', {
            title: subtitle,
            content: createFrame(url),
            closable: true,
            icon: icon
        });
    } else {
        //如果tabs已创建则选中
        $('#tabs').tabs('select', subtitle);
    }
}

function createFrame(url) {
    var s = '<iframe scrolling="auto" frameborder="0"  src="' + url + '" style="width:100%;height:100%;"></iframe>';
    return s;
}




custom.box.main.js

//加载数据字典信息,value值为id
/**
 * 用于向普通配置项的数据字典下拉框中加载数据
 * @param typecode
 * @param id
 */
function getDictinfoIdlist(typecode, id) {
    var selectobj = document.getElementById(id);
    selectobj.length = 0;
    selectobj.options[0] = new Option('全部', '');
    /*if(selectedvalue == ''){
        selectobj.options[selectobj.length-1].selected = true;
    }*/
    dwrService.getDictinfoIdlist(typecode, {
        callback: function (data) {
            if (data) {
                for (var m = 0; m < data.length; m++) {
                    var info = data[m].info;
                    var value = data[m].value;
                    alert(info + "   " + value);
                    selectobj.options[selectobj.length] = new Option(info, value);
                    /*if(selectedvalue == value){
                     selectobj.options[selectobj.length-1].selected = true;
                 }*/
                }
            }
        }
    });
}

//加载数据字典信息,value值为code
/**
 * 用于向业务代码的数据字典下拉框中加载数据
 * typecode为数据字典的typecode
 * id:select下拉框的id
 *
 */
function getDictinfoCodelist(typecode, id, selectedvalue) {
    var selectobj = document.getElementById(id);//通过id获取下拉框的对象
    selectobj.length = 0;
    selectobj.options[0] = new Option('全部', '');//向下拉框中放入option
    dwrService.getDictinfoCodelist(typecode, {
        callback: function (data) {
            if (data) {
                //遍历dwr获取数据
                for (var m = 0; m < data.length; m++) {
                    var info = data[m].info;//拿到map中的info
                    var value = data[m].value;//拿到map中的value
                    //alert(info+"  "+value);

                    selectobj.options[selectobj.length] = new Option(info, value);//向下拉框中放入option
                    //如果selectedvalue和dwr获取的值相同,让option选中
                    if (selectedvalue == value) {
                        selectobj.options[selectobj.length - 1].selected = true;
                    }
                }
                //selectobj.options.length=0;

            }
        }
    });
}

//加载最近5年时间
/**
 * id:年份下拉框的id
 */
function businessyearlist(id) {
    //获取select对象
    var selectobj = document.getElementById(id);
    //给下拉框里边的option数量清0
    selectobj.length = 0;
    //调用dwr的方法
    dwrService.businessyear({
        callback: function (data) {
            if (data) {
                for (var m = 0; m < data.length; m++) {
                    var info = data[m].info;
                    var value = data[m].value;
                    //在select下拉框中创建option
                    //alert(selectobj.length);
                    selectobj.options[selectobj.length] = new Option(info, value);

                }
                //选中下拉框最后一个值
                //selectobj.options[selectobj.length-1].selected = true;
            }
        }
    });
}


//统一封装方法,作用:提示信息
function message_alert(data) {
    //从返回的json数据中获取结果信息
    var data_v = data.resultInfo;

    //提交结果类型
    var type = data_v.type;
    //结果提示信息
    var message = data_v.message;
    //alert(message);
    if (type == 0) {
        //如果type等于0表示失败,调用 jquery easyui的信息提示组件
        $.messager.alert('提示信息', message, 'error');
    } else if (type == 1) {
        $.messager.alert('提示信息', message, 'success');
    } else if (type == 2) {
        $.messager.alert('提示信息', message, 'warning');
    } else if (type == 3) {
        $.messager.alert('提示信息', message, 'info');
    }
   
}


//jqueryeasyui messager封装
var alert_success = function (message) {
    alert_base(message, "success");
};

var alert_error = function (message) {
    alert_base(message, "error");
};

var alert_info = function (message) {
    alert_base(message, "info");
};

var alert_warn = function (message) {
    alert_base(message, "warning");
};

var alert_none = function (message) {
    alert_base(message);
};

var alert_base = function (message, iconType, details) {
    $.messager.alert('系统提示信息', message, iconType);
};

/**
 * 系统提交统一提示窗口,采用jquery easyui的模式window实现
 */
var TYPE_RESULT_FAIL = 0;
var TYPE_RESULT_SUCCESS = 1;
var TYPE_RESULT_WARN = 2;
var TYPE_RESULT_INFO = 3;
//将失败明细信息展示
var _alert = function (resultInfo) {
    var type = resultInfo.type;

    switch (type) {
        case TYPE_RESULT_FAIL:
            submit_alert_error(resultInfo);
            break;
        case TYPE_RESULT_SUCCESS:
            submit_alert_success(resultInfo);
            break;
        case TYPE_RESULT_WARN:
            submit_alert_warn(resultInfo);
            break;
        case TYPE_RESULT_INFO:
            submit_alert_info(resultInfo);
            break;
        default:
            submit_alert_info(resultInfo);
    }
    ;
    //取消加载框,某些情况自动取消不了这里需要再次调用
    $("#load").remove();
};

var submit_alert_success = function (resultInfo) {
    submit_alert_base(resultInfo, "success");
};

var submit_alert_error = function (resultInfo) {
    submit_alert_base(resultInfo, "error");
};

var submit_alert_info = function (resultInfo) {
    submit_alert_base(resultInfo, "info");
};

var submit_alert_warn = function (resultInfo) {
    submit_alert_base(resultInfo, "warning");
};


var submit_alert_base = function (resultInfo, iconType) {

    //提示代码
    var messageCode = resultInfo.messageCode;
    //提示信息
    var message = resultInfo.message;
    //提示信息明细
    var details = resultInfo.details;


    submit_alert_show(iconType, messageCode, message, details, 350, 250);
};

//明细提示窗口
function messagewindow(title, width, height, html) {
    this.title = title;
    this.width = width;
    this.height = height;
    this.html = html;
    var id = new Date().getMilliseconds();
    this.windowid = "message_win_" + id;

}

messagewindow.prototype.createWindow = function () {
    var active = document.createElement("div");
    active.id = "active";
    document.body.appendChild(active);
    active.innerHTML = "<div id=" + this.windowid + " class=\"easyui-window\" modal='true' closed='true'  iconCls=\"icon-save\" >" + this.html + "</div>";


    $('#' + this.windowid).window({
        title: this.title,
        width: this.width,
        modal: true,
        shadow: false,
        minimizable: false,
        collapsible: false,
        closed: true,
        height: this.height
    });
    this.open();

};
messagewindow.prototype.open = function () {
    $('#' + this.windowid).window('open');
};
messagewindow.prototype.close = function () {
    $('#' + this.windowid).window('close');
};

//模式窗口单一实例
var messagewindow_singleobj;

//系统提交提示窗口显示
function submit_alert_show(iconType, messageCode, message, messagelist, width, height) {

    var html = '<div style="width: 93%; height: auto;padding:10px" title="" >';
    //icon
    html += '<div class="messager-icon messager-' + iconType + '"></div>';
    //系统代码
    html += '<div>提示代码:' + messageCode + '</div>';
    html += '<div>提示信息:' + message + '</div>';
    html += '<div style="clear:both;"></div>';
    //详细信息
    var deltail = '';

    if (messagelist) {
        for (var index = 0; index < messagelist.length; index++) {
            deltail += '<div style="width: 100%;">';
            if (messagelist[index].index) {
                deltail += '序号:' + messagelist[index].index + ' ';
            }
            deltail += messagelist[index].message + '</div>';
        }
    }
    html += deltail;
    //按钮
    html += '<div style="width: 100%;"><div class="dialog-button" style="text-align:center;"><a href="javascript:closemessagewindow()" class="l-btn"><span class="l-btn-left"><span class="l-btn-text">确定</span></span></a></div></div>';
    //结束
    html += '</div>';


    /*
    var html='<div style="width: 93%; height: auto;padding:10px" title="" >'
                +'<div class="messager-icon messager-success"></div>'
                +'<div>系统代码:907,操作成功0条,失败2条</div><div style="clear:both;"></div>'
            //+'<div style="width: 100%;">ffsdsfdsfds</div>'
            //+'<div style="width: 100%;">ffsdsfdsfds</div>'
            //+'<div style="width: 100%;">ffsdsfdsfds</div>'
            //+'<div style="width: 100%;">ffsdsfdsfds</div>'
            +'<div style="width: 100%;"><div class="dialog-button" style="text-align:center;"><a href="javascript:closemessagewindow()" class="l-btn"><span class="l-btn-left"><span class="l-btn-text">确定</span></span></a></div></div>';
        +'</div>';*/

    messagewindow_singleobj = new messagewindow("系统提示", width, height, html);
    messagewindow_singleobj.createWindow();

}

//关闭模式窗口
function closemessagewindow() {
    if (messagewindow_singleobj) {
        messagewindow_singleobj.close();
    }
}


var _confirm = function (question, method_cancel, method_ok) {
    $.messager.confirm('系统提示', question, function (r) {
        if (r) {
            if (method_ok) {
                method_ok();
            }
        } else {
            if (method_cancel) {
                method_cancel();
            }
        }
    });

};

//获取返回结果信息对象
function getCallbackData(data) {
    return data.resultInfo;
}

//form表单数据转成json
(function ($) {
    $.fn.serializeJson = function () {
        var serializeObj = {};
        var array = this.serializeArray();
        var str = this.serialize();
        $(array).each(function () {
            if (serializeObj[this.name]) {
                if ($.isArray(serializeObj[this.name])) {
                    serializeObj[this.name].push(this.value);
                } else {
                    serializeObj[this.name] = [serializeObj[this.name], this.value];
                }
            } else {
                serializeObj[this.name] = this.value;
            }
        });
        return serializeObj;
    };
})(jQuery);

//********模式窗口类***********

function modalwindow(title, width, height, url) {
    this.title = title;
    this.width = width;
    this.height = height;
    this.url = url;
    var id = new Date().getMilliseconds();
    this.windowid = "win_" + id;
    this.iframeid = "iframe_" + id;

}

modalwindow.prototype.createWindow = function () {
    var active = document.createElement("div");
    active.id = "active";
    document.body.appendChild(active);
    active.innerHTML = "<div id=" + this.windowid + " class=\"easyui-window\" modal='true' closed='true'  iconCls=\"icon-save\" ><iframe scrolling='yes' style='overflow-x:hidden;' id='" + this.iframeid + "' src='" + this.url + "' frameborder='0' width='100%' height='100%'></iframe></div>";

    $('#' + this.windowid).window({
        title: this.title,
        width: this.width,
        modal: true,
        shadow: false,
        minimizable: false,
        collapsible: false,
        closed: true,
        height: this.height
    });
    this.open();

};
modalwindow.prototype.open = function () {
    $('#' + this.windowid).window('open');
};
modalwindow.prototype.close = function () {
    $('#' + this.windowid).window('close');
};

//模式窗口单一实例
var modalwindow_singleobj;

//创建模式窗口
function createmodalwindow(title, width, height, url) {
    modalwindow_singleobj = new modalwindow(title, width, height, url);
    modalwindow_singleobj.createWindow();

}

//关闭模式窗口
function closemodalwindow() {
    if (modalwindow_singleobj) {
        modalwindow_singleobj.close();
    }
}

//************以上为模式窗口类*************


//***********ztree封装类*****************
function createSyncTree(treeareaid, treeid, textid, valid, setting, zNodes, onclickLevel, selectevent, startNodes) {
    this.treeareaid = treeareaid;//树所在区域
    this.treeid = treeid;//树本身
    this.textid = textid;//选择树显示区
    this.valid = valid;//选择树存储区
    this.setting = setting;//树参数
    this.zNodes = zNodes;//结点
    this.onclickLevel = onclickLevel;//单击树的层级
    this.treeareaObj = $("#" + this.treeareaid);//树所在区域的div对象
    this.treeObj = $("#" + this.treeid);//树本身对象
    this.textObj = $("#" + this.textid);//选择树后显示文本框的对象
    this.valObj = $("#" + this.valid);//选择树后存放value值的对象
    this.selectevent = selectevent;//选中结点事件方式:onClick  onCheck
    this.textObjOffset = this.textObj.offset();//获取文本框的偏移量


    //定义的onclick方法
    if (this.selectevent == "onClick") {
        this.setting.callback.onClick = this.onClick();
    }
    //定义的onCheck方法
    if (this.selectevent == "onCheck") {
        this.setting.callback.onCheck = this.onCheck();
    }
    //初始化树中的结点
    $.fn.zTree.init(this.treeObj, this.setting, this.zNodes);
    //获取树对象
    this.zTree = $.fn.zTree.getZTreeObj(this.treeid);


    //初始化结点
    if (startNodes) {
        var startNodes_l = startNodes.split(',');//获取需要选择的节点
        for (var vi = 0; vi < startNodes_l.length - 1; vi++) {
            var nodetm = this.zTree.getNodeByParam("id", startNodes_l[vi], null);//根据属性查找出对应的结点对象
            this.zTree.checkNode(nodetm, true, true);//执行选择节点
        }
    }
}


createSyncTree.prototype.onCheck = function () {
    //文本框对象
    var textObj = this.textObj;
    //存放值对象
    var valObj = this.valObj;
    //单击树的层次
    var onclickLevel = this.onclickLevel;
    var treeOnCheck = function (e, treeId, treeNode) {

        var zTree = $.fn.zTree.getZTreeObj(treeId);

        var nodes = zTree.getCheckedNodes();
        var v = "";
        var v_id = "";

        nodes.sort(function compare(a, b) {
            return a.id - b.id;
        });
        for (var i = 0, l = nodes.length; i < l; i++) {
            if (onclickLevel) {
                if (onclickLevel == nodes[i].level) {
                    v += nodes[i].name + ",";
                    v_id += nodes[i].id + ",";
                }
            } else {
                v += nodes[i].name + ",";
                v_id += nodes[i].id + ",";
            }
        }
        if (v.length > 0) v = v.substring(0, v.length - 1);
        if (v_id.length > 0) v_id = v_id.substring(0, v_id.length - 1);
        textObj.attr("value", v);//树结点名称填入文本框
        valObj.attr("value", v_id);//树结点id填入值框
    };
    return treeOnCheck;
};
//树单击事件
createSyncTree.prototype.onClick = function () {
    //文本框对象
    var textObj = this.textObj;
    //存放值对象
    var valObj = this.valObj;
    //单击树的层次
    var onclickLevel = this.onclickLevel;
    var treeOnclick = function (e, treeId, treeNode) {
        //如果单击限定了层级则在这里判断拦截
        if (onclickLevel) {
            if (onclickLevel != treeNode.level) {
                alert("对不起,只允许选择树的第" + (onclickLevel + 1) + "级!");
                return;
            }
        }

        var zTree = $.fn.zTree.getZTreeObj(treeId);

        var nodes = zTree.getSelectedNodes();
        var v = "";
        var v_id = "";
        nodes.sort(function compare(a, b) {
            return a.id - b.id;
        });
        for (var i = 0, l = nodes.length; i < l; i++) {
            v += nodes[i].name + ",";
            v_id += nodes[i].id + ",";
        }
        if (v.length > 0) v = v.substring(0, v.length - 1);
        if (v_id.length > 0) v_id = v_id.substring(0, v_id.length - 1);
        textObj.attr("value", v);//树结点名称填入文本框
        valObj.attr("value", v_id);//树结点id填入值框
    };
    return treeOnclick;
};

createSyncTree.prototype.onBodyDown = function () {
    var textid = this.textid;
    var treeareaid = this.treeareaid;
    var createSyncTreeObj = this;
    var onBodyDown = function (event) {
        if (!(event.target.id == treeareaid || $(event.target).parents("#" + treeareaid).length > 0)) {
            createSyncTreeObj.hideMenu();
        }
    };
    return onBodyDown;
};

createSyncTree.prototype.hideMenu = function () {
    this.treeareaObj.fadeOut("fast");
    $("body").unbind("mousedown", this.onBodyDown);
};

createSyncTree.prototype.showMenu = function () {
    //根据文本框的偏移量定位树区域的位置
    this.treeareaObj.css({
        left: this.textObjOffset.left + "px",
        top: this.textObjOffset.top + this.textObj.outerHeight() + "px"
    }).slideDown("fast");
    //绑定鼠标按下事件
    $("body").bind("mousedown", this.onBodyDown());
};

后台用了servlet,用啥都没关系

UserServelt

package com.hr.web;

import com.google.gson.Gson;
import com.hr.entity.ResultInfo;
import com.hr.entity.SysResult;
import com.hr.entity.User;
import com.hr.service.UserService;
import com.hr.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet("/user")
public class UserServlet extends HttpServlet {
    private UserService userService = new UserServiceImpl();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.setHeader("Access-Control-Allow-Origin", "*");
        //查所有
        String action = req.getParameter("action");
        switch (action) {
            case "findAll":
                findAll(req, resp);
                break;
            case "add":
                add(req, resp);
                break;
            case "findOne":
                findOne(req, resp);
                break;
            case "update":
                update(req, resp);
                break;
            case "delete":
                delete(req, resp);
                break;
        }

    }

    protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        boolean update = userService.delete(Integer.parseInt(id));
        System.out.println(update);
        PrintWriter out = resp.getWriter();
        //如何封装成json对象
        SysResult result = new SysResult();
        ResultInfo info = new ResultInfo();
        info.setType(1);//0错误
        info.setMessage(update ? "删除成功" : "删除失败");
        result.setResultInfo(info);
        Gson gson = new Gson();
        String data = gson.toJson(result);
        System.out.println(data);
        out.print(data);
    }

    protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前台的数据
        String id = req.getParameter("id");
        String loginName = req.getParameter("loginName");
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");
        String sex = req.getParameter("sex");//bug
        int sex2 = -1;
        try {
            sex2 = Integer.parseInt(sex);
        } catch (Exception e) {
            sex2 = "男".equals(sex) ? 1 : 0;
        }
        String identityCode = req.getParameter("identityCode");
        String email = req.getParameter("email");
        String type = req.getParameter("type");//bug
        int type2 = -1;
        try {
            type2 = Integer.parseInt(type);
        } catch (Exception e) {
            type2 = "后台".equals(type) ? 1 : 0;
        }
        String mobile = req.getParameter("mobile");
        User user = new User();
        user.setId(Integer.parseInt(id));
        user.setLoginName(loginName);
        user.setUserName(userName);
        user.setPassword(password);
        if (!(type == null || "".equals(type))) {
            user.setType(type2);//注意
        }

        user.setSex(sex2);
        user.setIdentityCode(identityCode);
        user.setMobile(mobile);
        user.setEmail(email);
        //调服务层
        boolean update = userService.update(user);
        System.out.println(update);
        PrintWriter out = resp.getWriter();
        //如何封装成json对象
        SysResult result = new SysResult();
        ResultInfo info = new ResultInfo();
        info.setType(1);//0错误
        info.setMessage(update ? "修改成功" : "修改失败");
        result.setResultInfo(info);
        Gson gson = new Gson();
        String data = gson.toJson(result);
        System.out.println(data);
        out.print(data);
    }

    protected void findOne(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        User user = userService.findOne(Integer.parseInt(id));
        Gson g = new Gson();
        String json = g.toJson(user);
        System.out.println("查单个" + json);
        PrintWriter out = resp.getWriter();
        out.print(json);

    }

    protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前台的数据
        String loginName = req.getParameter("loginName");
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");
        String sex = req.getParameter("sex");
        String identityCode = req.getParameter("identityCode");
        String email = req.getParameter("email");
        String type = req.getParameter("type");
        String mobile = req.getParameter("mobile");
        User user = new User();
        user.setLoginName(loginName);
        user.setUserName(userName);
        user.setPassword(password);
        if (!(type == null || "".equals(type))) {
            user.setType(Integer.parseInt(type));//注意
        }

        user.setSex(Integer.parseInt(sex));
        user.setIdentityCode(identityCode);
        user.setMobile(mobile);
        user.setEmail(email);
        //调服务层
        boolean add = userService.add(user);
        System.out.println(add);
        PrintWriter out = resp.getWriter();
        //如何封装成json对象
        SysResult result = new SysResult();
        ResultInfo info = new ResultInfo();
        info.setType(1);//0错误
        info.setMessage(add ? "保存成功" : "保存失败");
        result.setResultInfo(info);
        Gson gson = new Gson();
        String data = gson.toJson(result);
        System.out.println(data);
        out.print(data);


    }

    protected void findAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //
        User user = new User();
        user.setUserName(req.getParameter("userName"));
        String sex = req.getParameter("sex");
        if (!(sex == null || "".equals(sex))) {
            user.setSex(Integer.parseInt(sex));
        }

        //获取easyUI的参数,有默认值
        String page = req.getParameter("page");
        String rows = req.getParameter("rows");
        List<User> lists = userService.findAll(user, Integer.parseInt(page), Integer.parseInt(rows));

        UserResult result = new UserResult();
        result.setTotal(userService.totals(user));
        result.setRows(lists);
        Gson gson = new Gson();
        String json = gson.toJson(result);
        PrintWriter out = resp.getWriter();
        out.print(json);
    }
}

class UserResult {
    private Integer total;//总条数
    private List<User> rows;

    public UserResult() {
    }

    public Integer getTotal() {
        return total;
    }

    public void setTotal(Integer total) {
        this.total = total;
    }

    public List<User> getRows() {
        return rows;
    }

    public void setRows(List<User> rows) {
        this.rows = rows;
    }
}

封装了实体

package com.hr.entity;

public class SysResult {
    private ResultInfo resultInfo;

    public SysResult() {
    }

    public ResultInfo getResultInfo() {
        return resultInfo;
    }

    public void setResultInfo(ResultInfo resultInfo) {
        this.resultInfo = resultInfo;
    }
}
package com.hr.entity;

public class ResultInfo {
    private Integer type;
    private String message;

    public ResultInfo() {
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
package com.hr.entity;

public class User {
    private Integer id;
    private String loginName;
    private String userName;
    private String password;
    private Integer sex;//1男2女
    private String identityCode;
    private String email;
    private String mobile;
    private Integer type; //1前,2后

    public User() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getIdentityCode() {
        return identityCode;
    }

    public void setIdentityCode(String identityCode) {
        this.identityCode = identityCode;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }
}

dao接口

package com.hr.dao;

import com.hr.entity.User;

import java.util.List;

public interface UserDao {
    /**
     * @param user 模糊查
     * @param page 第几页
     * @param rows 每页显示的条数
     * @return
     */
    List<User> findAll(User user, Integer page, Integer rows);

    /**
     * 查所有的总条数,查男的总条数
     *
     * @param user
     * @return
     */
    int totals(User user);

    /**
     * @param user
     * @return
     */
    int add(User user);

    /**
     * 查找单个
     *
     * @param id
     * @return
     */
    User findOne(Integer id);

    /**
     * 修改
     *
     * @param user
     * @return
     */
    int update(User user);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int delete(Integer id);

}

数据库连接公共类

package com.hr.db;

import java.sql.*;

public class DBHelper {
    private static final String URL = "jdbc:mysql://localhost:3306/easybuy?useUnicode=true&characterEncoding=utf-8&useSSL=false";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "11111111";
    protected static Connection conn;
    protected PreparedStatement pstmt;
    protected ResultSet rs;
    public static Connection getConnection(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
            System.out.println(conn);
        } catch (ClassNotFoundException e) {
            System.out.println("找不到驱动");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("连接数据库失败");
            e.printStackTrace();
        }

        return conn;
    }

    public static void main(String[] args) {
        getConnection();
    }
    //关
    public static void closeAll(ResultSet rs,PreparedStatement pstmt,Connection conn){
            try {
                if(rs!=null) {
                    rs.close();
                    rs = null;
                }
                if (pstmt != null) {
                    pstmt.close();
                    pstmt = null;
                }
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    }
    //查询的公共方法                      可以不传,可以传null,也可以传多个
    public ResultSet query(String sql ,Object ...args){
        conn = getConnection();
        try {
            pstmt = conn.prepareStatement(sql);
            //如果有问号
            if (args != null && args.length > 0) {
                for (int i = 0; i < args.length; i++) {
                    pstmt.setObject(i+1,args[i]);
                }
            }
            //执行
            rs = pstmt.executeQuery();

        }catch (Exception e){
            e.printStackTrace();
        }
        return rs;//不能关。关了就没了。
    }

    //增删改的公共方法
    public int update(String sql,Object ...args){
        int j = 0;
        conn = getConnection();
        try {
            pstmt = conn.prepareStatement(sql);
            //如果有问号
            if (args != null && args.length > 0) {
                for (int i = 0; i < args.length; i++) {
                    pstmt.setObject(i+1,args[i]);
                }
            }
            //执行
            j = pstmt.executeUpdate();

        }catch (Exception e){
            e.printStackTrace();
        }
        return j;
    }
}




dao的实现类

package com.hr.dao.impl;

import com.hr.dao.UserDao;
import com.hr.db.DBHelper;
import com.hr.entity.User;

import java.util.ArrayList;
import java.util.List;

public class UserDaoImpl extends DBHelper implements UserDao {
    @Override
    public List<User> findAll(User user, Integer page, Integer rows) {
        StringBuffer sb = new StringBuffer("select * from easybuy_user where 1=1 ");
        if (user != null) {
            if (user.getUserName() != null) {
                sb.append(" and userName like '%").append(user.getUserName()).append("%'");
            }
            if (user.getSex() != null) {
                sb.append(" and sex = ").append(user.getSex());//不加单引号,因为是整型
            }
        }
        sb.append(" limit ").append((page - 1) * rows).append(",").append(rows);
        rs = super.query(sb.toString());
        List<User> lists = null;
        try {
            if (rs != null) {
                lists = new ArrayList<>();
                while (rs.next()) {
                    User u = new User();
                    u.setId(rs.getInt("id"));
                    u.setLoginName(rs.getString("loginName"));
                    u.setUserName(rs.getString("userName"));
                    u.setSex(rs.getInt("sex"));
                    u.setPassword(rs.getString("password"));
                    u.setIdentityCode(rs.getString("identityCode"));
                    u.setEmail(rs.getString("email"));
                    u.setType(rs.getInt("type"));
                    u.setMobile(rs.getString("mobile"));

                    lists.add(u);
                }


            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeAll(rs, pstmt, conn);
        }
        return lists;
    }

    @Override
    public int totals(User user) {
        StringBuffer sb = new StringBuffer("select count(*) totals from easybuy_user where 1=1 ");
        if (user != null) {
            if (user.getUserName() != null) {
                sb.append(" and userName like '%").append(user.getUserName()).append("%'");
            }
            if (user.getSex() != null) {
                sb.append(" and sex = ").append(user.getSex());//不加单引号,因为是整型
            }
        }
        rs = super.query(sb.toString());
        try {
            if (rs != null) {
                while (rs.next()) {
                    return rs.getInt("totals");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeAll(rs, pstmt, conn);
        }
        return 0;
    }

    @Override
    public int add(User user) {
        String sql = "insert into easybuy_user(loginName,userName,password,sex,identityCode,email,mobile,type) values(?,?,?,?,?,?,?,?)";
        int i = super.update(sql, user.getLoginName(), user.getUserName(), user.getPassword(), user.getSex(), user.getIdentityCode(), user.getEmail(), user.getMobile(), user.getType());
        return i;
    }

    @Override
    public User findOne(Integer id) {
        StringBuffer sb = new StringBuffer("select * from easybuy_user where id = ? ");
        rs = super.query(sb.toString(), id);
        try {
            if (rs != null) {
                while (rs.next()) {
                    User u = new User();
                    u.setId(rs.getInt("id"));
                    u.setLoginName(rs.getString("loginName"));
                    u.setUserName(rs.getString("userName"));
                    u.setSex(rs.getInt("sex"));
                    u.setPassword(rs.getString("password"));
                    u.setIdentityCode(rs.getString("identityCode"));
                    u.setEmail(rs.getString("email"));
                    u.setType(rs.getInt("type"));
                    u.setMobile(rs.getString("mobile"));

                    return u;
                }


            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeAll(rs, pstmt, conn);
        }
        return null;
    }

    @Override
    public int update(User user) {
        String sql = "update  easybuy_user set loginName=?,userName=?,password=?,sex=?,identityCode=?,email=?,mobile=?,type=? where id = ?";
        int i = super.update(sql, user.getLoginName(), user.getUserName(), user.getPassword(), user.getSex(), user.getIdentityCode(), user.getEmail(), user.getMobile(), user.getType(), user.getId());
        return i;

    }

    @Override
    public int delete(Integer id) {
        String sql = "delete from easybuy_user where id = ?";
        return super.update(sql, id);
    }
}

服务层接口

package com.hr.service;

import com.hr.entity.User;

import java.util.List;

public interface UserService {
    List<User> findAll(User user, Integer page, Integer rows);

    int totals(User user);

    boolean add(User user);

    /**
     * 查找单个
     *
     * @param id
     * @return
     */
    User findOne(Integer id);

    /**
     * 修改
     *
     * @param user
     * @return
     */
    boolean update(User user);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    boolean delete(Integer id);
}

服务层实现类

package com.hr.service.impl;

import com.hr.dao.UserDao;
import com.hr.dao.impl.UserDaoImpl;
import com.hr.entity.User;
import com.hr.service.UserService;

import java.util.List;

public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserDaoImpl();

    @Override
    public List<User> findAll(User user, Integer page, Integer rows) {

        return userDao.findAll(user, page, rows);
    }

    @Override
    public int totals(User user) {
        return userDao.totals(user);
    }

    @Override
    public boolean add(User user) {
        return userDao.add(user) > 0;
    }

    @Override
    public User findOne(Integer id) {
        return userDao.findOne(id);
    }

    @Override
    public boolean update(User user) {
        return userDao.update(user) > 0;
    }

    @Override
    public boolean delete(Integer id) {
        return userDao.delete(id) > 0;
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

代码百度云盘

链接:https://pan.baidu.com/s/1qMIDHs97YVP4Pr7pjJ3iQg  密码:r4ub

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤永红

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值