zoukankan      html  css  js  c++  java
  • 項目当中使用的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当中的写法。

    
    
    
    

      

  • 相关阅读:
    java 基础(Collections 工具类的常用方法)
    Java 基础( Map 实现类: Properties)
    Java 基础(Map)
    Java 基础(集合三)
    Java 基础(集合二)
    Java 基础(集合一)
    Java 基础(Annotation)
    CentOS7 系统 springboot应用启动脚本
    GenericObjectPool源码分析
    问题springboot项目启动报错
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/9836672.html
Copyright © 2011-2022 走看看