項目当中使用的easyui的模板crud页面

1、简单的增删改查页面:

  第一步骤:html原型型编写,写法参照了easyui demo中form有关html等

    

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>渠道管理</title>
    <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
    <link rel="stylesheet" type="text/css" href="../demo.css">
    <script type="text/javascript" src="../../jquery.min.js"></script>
    <script type="text/javascript" src="../../jquery.easyui.min.js"></script>
    
    <style>
        body{
            font-size:14px;
        }
        .search-button {
            width:100px;
        }
    </style>
    
</head>
<body>
    <div class="search">
        <form id="channelManageForm">
            <span style="margin:5px">
                产品:
                <select class="easyui-combobox" name="productId" style="120px;">
                    <option value="001">速米袋</option>
                    <option value="002">分期专家</option>
                    <option value="003">随时花</option>
                </select>
            </span>
            <span style="margin:5px">
                渠道名称:
                <select class="easyui-combobox" name="channelCode" style="120px;">
                    <option value="">全部</option>
                    <option value="mlh">米来花</option>
                    <option value="xgjq">西瓜借钱</option>
                </select>
            </span>
            <span style="margin:5px">
                渠道状态:
                <select class="easyui-combobox" name="channelStatus" style="120px;">
                    <option value="">全部</option>
                    <option value="1">启用</option>
                    <option value="0">禁用</option>
                </select>
            </span>
            <span style="margin:5px">
            <a href="#" class="easyui-linkbutton search-button search" iconCls="icon-search">查询</a>
            </span>
            <span style="margin:5px">
            <a href="#" class="easyui-linkbutton search-button reset" iconCls="icon-reload">重置</a>
            </span>
            <span style="margin:5px">
            <a href="#" class="easyui-linkbutton search-button add" data-options="iconCls:'icon-add'">新增</a>
            </span>
        </form>
    </div>
    
    <!-- 
    <div class="toolbar" style="margin:5px;">
        <a style="80px; height:35px;" href="#" class="easyui-linkbutton" onclick="addChannel()" data-options="iconCls:'icon-add'">新增</a>
        <a style="80px; height:35px;" href="#" class="easyui-linkbutton" onclick="editChannel()" data-options="iconCls:'icon-edit'">编辑</a>
    </div>
    -->
    
    <div id="table-list">
    </div>
    
    <div id="addChannel" style="display:none">
        <form id="addChannelForm" class="easyui-form">
            <div style="margin:20px">
                <select class="easyui-combobox" name="productId" label="产品" style="80%">
                    <option value="001">速米袋</option>
                    <option value="002">分期专家</option>
                    <option value="003">随时花</option>
                </select>
            </div>
            <div style="margin:20px">
                <input class="easyui-textbox" name="channelName" style="80%" data-options="label:'渠道名:',required:true">
            </div>
            <div style="text-align:center;padding:5px 0">
            <a href="javascript:void(0)" class="easyui-linkbutton submit" iconCls="icon-save" style="80px">确认</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="cancel('addChannel')" style="80px">取消</a>
        </div>
        </form>
        
    </div>
    
    <div id="editChannel" style="display:none">
        <form id="editChannelForm" class="easyui-form">
            <div style="margin:20px">
                <select class="easyui-combobox" name="productId" label="产品" style="80%;" disabled>
                    <option value="001">速米袋</option>
                    <option value="002">分期专家</option>
                    <option value="003">随时花</option>
                </select>
            </div>
            <div style="margin:20px">
                <input class="easyui-textbox" name="channelName" style="80%" data-options="label:'渠道名:',required:true">
            </div>
            <div style="text-align:center;padding:5px 0">
            <a href="javascript:void(0)" class="easyui-linkbutton submit" iconCls="icon-save" style="80px">确认</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="cancel('editChannel')" style="80px">取消</a>
        </div>
        </form>
        
    </div>
    
    <script type="text/javascript">
        $(function(){
            $("#table-list").datagrid({
                title: "渠道推广列表",
                fitColumns:true,
                pagination:true,
                //url: basePath + '/commonContentManage/structure/queryStructure',
                data:[
                {channelNo:"001",productName:"速米袋",channelName:"米来花",channelCode:"10110001",status:1},
                {channelNo:"002",productName:"速米袋",channelName:"西瓜借钱",channelCode:"10110002",status:0}
                ],
                //url:'channel_data.json',
                singleSelect: true,
                columns:[[
                    {field:'channelNo',hidden:true, 50},
                    {field:'productName',align:'center',title:'产品名', 50},
                    {field:'channelName',align:'center',title:'渠道名称', 50},
                    {field:'channelCode',align:'center',title:'渠道登录编码', 50},
                    {field:'status',align:'center',title:'渠道状态',formatter:formatterFieldStatus, 50},
                    {field:'operator',align:'center',title:'操作',formatter:formatterFieldOperator, 50}
                ]],

                onBeforeLoad: function (param) {
                    var firstLoad = $(this).attr("firstLoad");
                    if (firstLoad == "false" || typeof (firstLoad) == "undefined")
                    {
                        $(this).attr("firstLoad","true");
                        return false;
                    }
                    return true;
                },
                checkOnSelect: false
            });
            
            //查询按钮
            $("#channelManageForm .search").click(function(){
                $("#table-list").datagrid('load',getFormObj("channelManageForm"));
            });
            
            //重置按钮
            $("#channelManageForm .reset").click(function(){
                $("#channelManageForm").form('reset');
            });
            
            
            //新增按钮
            $("#channelManageForm .add").click(function(){
                addChannel();
            });
            
            function formatterFieldStatus(value, row, index){
                return status == 1 ? "禁用" : "启用";
            }
            
            function formatterFieldOperator(value, row, index){
                var changeStatus = "";
                if(row.status == '1'){
                    changeStatus = "<a href='#' style='text-decoration:none;' onclick='changeStatus("0")'>禁用</a>";
                }else{
                    changeStatus = "<a href='#' style='text-decoration:none;'  onclick='changeStatus("1")'>启用</a>";
                }
                
                var edit = "<a href='#' style='text-decoration:none;'  onclick='editChannel(""+  row.channelNo + "")'>编辑</a>";
                return changeStatus + "&nbsp;&nbsp;" + edit;
            }
            
            //新增渠道点击保存按钮
            $("#addChannelForm .submit").click(function(){
            
                $("#addChannelForm").form('submit',{
                    url:'',
                    onSubmit: function(){
                        var isValid = $(this).form('validate');
                        if (!isValid){
                            $.messager.progress('close');    // hide progress bar while the form is invalid
                        }
                        return isValid;    // return false will stop the form submission
                    },
                    success: function(){
                        var datas = JSON.parse(data);
                        if (datas.success == "true"){
                            $.messager.alert('操作结果', datas.message, 'info');
                            $("#addChannel").dialog('close');
                        } else{
                            $.messager.alert('操作结果', datas.message, 'error');
                        }
                    }
                });                    
                
            });
            
            //修改渠道点击保存按钮
            $("#editChannelForm .submit").click(function(){
            
                $("#editChannelForm").form('submit',{
                    url:'',
                    onSubmit: function(){
                        var isValid = $(this).form('validate');
                        if (!isValid){
                            $.messager.progress('close');    // hide progress bar while the form is invalid
                        }
                        return isValid;    // return false will stop the form submission
                    },
                    success: function(){
                        var datas = JSON.parse(data);
                        if (datas.success == "true"){
                            $.messager.alert('操作结果', datas.message, 'info');
                            $("#editChannel").dialog('close');
                        } else{
                            $.messager.alert('操作结果', datas.message, 'error');
                        }
                    }
                });                    
                
            });
        });
        
        function changeStatus(status){
                var message = "确定要";
                if(status == '1'){
                    message += "启用吗?";
                }else{
                    message += "禁用吗?";
                }
                $.messager.confirm("confirm", message, function(r){
                    if (r){
                        $.messager.alert("提示","操作成功!","info");
                    }
                });
            }
            
        /**
         * 增加页面
         */
        function addChannel() {
            $("#addChannel").dialog({
                title: '新增渠道',
                400,
                height:300,
                closed:false,
                cache:false,
                modal:true,
                onClose: function () {
                        //$(this).dialog('destroy').remove();
                        $("#table-list").datagrid('reload', getFormObj("channelManageForm"));
                }
            });
        }
        
        /**
         * 修改页面
         */
        function editChannel(channelNo) {
            //var row = $('#table-list').datagrid('getSelected');
            //if (row) {
                $('#editChannelForm').form('load', {
                    productId:'001',
                    channelName:'米来花'
                });
                $("#editChannel").dialog({
                    title: '修改渠道',
                    400,
                    height:300,
                    closed:false,
                    cache:false,
                    modal:true,
                    onClose: function () {
                        //$(this).dialog('destroy').remove();
                        $("#table-list").datagrid('reload', getFormObj("channelManageForm"));
                    }
                });
            //}else{
            //    $.messager.alert("提示","请选中要修改的行!","warning");
            //}
            
        }
        
        /**
         * 取消
         */
        function cancel(obj){
            $("#"+obj).dialog('close');
        }
        
        /**
         * 获取表单数据,并将其转换为对象
         */
        function getFormObj(formId) {
            var formObj = {};
            var inputs = $('#'+formId).serializeArray();
            $.each(inputs, function (i, input) {
                formObj[input.name] = input.value;
            });
            return formObj;
        }
        
    </script>
    
</body>
</html>

2、项目当中实际使用的ftl文件,我将js也嵌入了其中:

<#import "../../master/master-html.ftl" as html/>
<@html.html>
    <@html.head title="渠道管理" description="" keywords=" ">
        <style>
            body {
                font-size: 14px;
            }

            .search-button {
                width: 100px;
            }
        </style>
    </@html.head>
<body>
    <div class="search">
        <form id="channelManageForm">
            <span style="margin:5px">
                产品:
                <select class="easyui-combobox" name="appChannel" style="120px;"
                        data-options="
                            url:basePath +  '/promotion/channel/getUserProductList',
                            valueField:'code',
                            textField:'description',
                            onLoadSuccess:function(){
                                var data = $(this).combobox('getData');
                                for (var item in data[0]) {  
                                    $(this).combobox('select', data[0]['code']);  
                                }  
                            }
" editable='false' >
                </select>
            </span>
            <span style="margin:20px">
                渠道名称: <input class="easyui-textbox" name="channelName" style="120px;">
            </span>
            <span style="margin:5px">
                渠道状态:
                <select class="easyui-combobox" name="channelStatus" style="120px;">
                    <option value="">全部</option>
                    <option value="1">启用</option>
                    <option value="0">禁用</option>
                </select>
            </span>
            <span style="margin:5px">
            <a href="#" class="easyui-linkbutton search-button search" iconCls="icon-search">查询</a>
            </span>
            <span style="margin:5px">
            <a href="#" class="easyui-linkbutton search-button reset" iconCls="icon-reload">重置</a>
            </span>
            <span style="margin:5px">
            <a href="#" class="easyui-linkbutton search-button add" data-options="iconCls:'icon-add'">新增</a>
            </span>
        </form>
    </div>
    
    <div id="table-list">
    </div>

    <div id="addChannel" style="display:none">
        <form id="addChannelForm" method="post">
            <div style="margin:20px">
                <input class="easyui-combobox" name="appChannel" style="280px;"
                        data-options="
                            url:basePath +  '/promotion/channel/getUserProductList',
                            valueField:'code',
                            textField:'description',
                            label:'产品:'" editable=’false’ required>
                </input>
            </div>
            <div style="margin:20px">
                <input class="easyui-textbox" name="channelName" style="280px;" data-options="label:'渠道名:',required:true">
            </div>
            <div style="text-align:center;padding:5px 0">
            <button type="submit" class="easyui-linkbutton" iconCls="icon-save" style="80px">确认</button>
            <button class="easyui-linkbutton" iconCls="icon-cancel" onclick="cancel('addChannel')" style="80px">取消</button>
            </div>
        </form>
        
    </div>
    
    <div id="editChannel" style="display:none">
        <form id="editChannelForm" class="easyui-form" method="post">
            <input type="hidden" name="channelNo"/>
            <div style="margin:20px">
                <select class="easyui-combobox" name="appChannel" style="280px;"
                        data-options="
                            url:basePath +  '/promotion/channel/getUserProductList',
                            valueField:'code',
                            textField:'description', label:'产品'" disabled>
                </select>
            </div>
            <div style="margin:20px">
                <input class="easyui-textbox" name="channelName" style="280px;" data-options="label:'渠道名:',required:true">
            </div>
            <div style="text-align:center;padding:5px 0">
            <button type="submit" class="easyui-linkbutton" iconCls="icon-save" style="80px">确认</button>
            <button class="easyui-linkbutton" iconCls="icon-cancel" onclick="cancel('editChannel')" style="80px">取消</button>
        </div>
        </form>
        
    </div>
    
    <script type="text/javascript">
        $(function(){

            var appList;
            initEmbellishData();

            function initEmbellishData() {
                $.ajax({
                    url: basePath + "/promotion/channel/getEmbellishResource",
                    method: 'get',
                    dataType: "json",
                    success: function (data) {
                        appList = data["appList"];
                    }
                });
            }

            $("#table-list").datagrid({
                title: "渠道推广列表",
                fitColumns:true,
                pagination:true,
                url: basePath + '/promotion/channel/queryChannel',
                singleSelect: true,
                columns:[[
                    {field:'channelNo',hidden:true, 50},
                    {
                        field: 'appChannel',
                        align: 'center',
                        title: '产品名',
                        formatter: formatterFieldAppChannel,
                         50
                    },
                    {field:'channelName',align:'center',title:'渠道名称', 50},
                    {field:'channelCode',align:'center',title:'渠道编码', 50},
                    {
                        field: 'channelStatus',
                        align: 'center',
                        title: '渠道状态',
                        formatter: formatterFieldChannelStatus,
                         50
                    },
                    {field:'operator',align:'center',title:'操作',formatter:formatterFieldOperator, 50}
                ]],

                onBeforeLoad: function (param) {
                    var firstLoad = $(this).attr("firstLoad");
                    if (firstLoad == "false" || typeof (firstLoad) == "undefined")
                    {
                        $(this).attr("firstLoad","true");
                        return false;
                    }
                    return true;
                },
                checkOnSelect: false
            });

            function formatterFieldAppChannel(value, row, index) {
                var app;
                for (var i = 0; i < appList.length; i++) {
                    app = appList[i];
                    if (app["code"] == value) {
                        return app["description"];
                    }
                }
                return value;
            }

            function formatterFieldChannelStatus(value, row, index) {
                return row.channelStatus == '1' ? "启用" : "禁用";
            }
            
            function formatterFieldOperator(value, row, index){
                var changeStatus = "";
                if (row.channelStatus == '1') {
                    changeStatus = "<a href='#' style='text-decoration:none;' onclick="changeChannelStatus('" + row.channelNo + "' ,'0')">禁用</a>";
                }else{
                    changeStatus = "<a href='#' style='text-decoration:none;' onclick="changeChannelStatus('" + row.channelNo + "' ,'1')">启用</a>";
                }
                
                var edit = "<a href='#' style='text-decoration:none;'  onclick="editChannel('"+  row.channelNo + "')">编辑</a>";
                return changeStatus + "&nbsp;&nbsp;" + edit;
            }
            
            //查询按钮
            $("#channelManageForm .search").click(function(){
                var appChannel = $("#channelManageForm [name=appChannel]").val();
                if (appChannel == '' || appChannel == null || appChannel == 'undefined') {
                    $.messager.alert('提示','产品必须选择','warn');
                }else{
                    $("#table-list").datagrid('load',getFormObj("channelManageForm"));
                }

            });
            
            //重置按钮
            $("#channelManageForm .reset").click(function(){
                $("#channelManageForm").form('reset');
            });
            
            
            //新增按钮
            $("#channelManageForm .add").click(function(){
                addChannel();
            });
            

            $("#addChannelForm").form({
                url: basePath + '/promotion/channel/addChannel',
                onSubmit: function(){
                    var isValid = $(this).form('validate');
                    if (!isValid){
                        $.messager.progress('close');    // hide progress bar while the form is invalid
                    }
                    return isValid;    // return false will stop the form submission
                },
                success: function (data) {
                    var datas = JSON.parse(data);
                    if (datas.code == "200") {
                        $.messager.alert('操作结果', datas.desc, 'info');
                        $("#addChannel").dialog('close');
                        $("#table-list").datagrid('reload', getFormObj("channelManageForm"));
                    } else{
                        $.messager.alert('操作结果', datas.desc, 'error');
                    }
                }
            });
                

            $("#editChannelForm").form({
                url: basePath + '/promotion/channel/editChannel',
                onSubmit: function(){
                    var isValid = $(this).form('validate');
                    if (!isValid){
                        $.messager.progress('close');    // hide progress bar while the form is invalid
                    }
                    return isValid;    // return false will stop the form submission
                },
                success: function (data) {
                    var datas = JSON.parse(data);
                    if (datas.code == "200") {
                        $.messager.alert('操作结果', datas.desc, 'info');
                        $("#editChannel").dialog('close');
                        $("#table-list").datagrid('reload', getFormObj("channelManageForm"));
                    } else{
                        $.messager.alert('操作结果', datas.desc, 'error');
                    }
                }
            });

        });

        function changeChannelStatus(channelNo, channelStatus) {
                var message = "确定要";
            if (channelStatus == '1') {
                    message += "启用吗?";
                }else{
                    message += "禁用吗?";
                }
                $.messager.confirm("confirm", message, function(r){
                    if (r){
                        $.ajax({
                            url: basePath + "/promotion/channel/changeChannelStatus",
                            method: 'post',
                            dataType: "json",
                            data: 'channelNo=' + channelNo + "&channelStatus=" + channelStatus,
                            success: function (data) {
                                if (data.code == '200') {
                                    $.messager.alert("提示", data.desc, "info");
                                    $("#table-list").datagrid('reload', getFormObj("channelManageForm"));
                                } else {
                                    $.messager.alert("提示", data.desc, "error");
                                }
                            }
                        });
                    }
                });
            }
            
        /**
         * 增加页面
         */
        function addChannel() {
            $("#addChannel").dialog({
                title: '新增渠道',
                400,
                height:300,
                closed:false,
                cache:false,
                modal:true,
                onClose:function(){
                    $('#addChannelForm').form('clear');
                }
            });
        }
        
        /**
         * 修改页面
         */
        function editChannel(channelNo) {
            $('#editChannelForm').form('load', basePath + '/promotion/channel/loadChannel?channelNo=' + channelNo);
                $("#editChannel").dialog({
                    title: '修改渠道',
                    400,
                    height:300,
                    closed:false,
                    cache:false,
                    modal:true
                });
            
        }
        
        /**
         * 取消
         */
        function cancel(obj){
            $("#"+obj).dialog('close');
        }

        
    </script>
    
</body>
</@html.html>

 这里使用了ajax+js的 initEmbellishData 做数据回显

使用了datagrid控件做分页查询

使用 combobox 做下拉框异步以及级联

使用from部分的load、clear、validate、submit进行数据加载、清除、校验、提交等

datagrid的方法formatter的方法格式可以参考一下,感觉比较有美感

onBeforeLoad这里的写法是让第一次访问不会进行查询

checkOnSelect这里是为了选择单行的时候checkbox不会被选择

combobox中选中加载中的第一个放在onLoadSuccess方法里面

getFormObject是放在工具类的方法,是将from的表单内容拼接为object的json吧,代码在html有。dialog中数据清除和reload与load from这里可以借鉴借鉴,这里参考的是demo当中的写法。




  

原文地址:https://www.cnblogs.com/aigeileshei/p/9836672.html