javascript jquery html5 实现快速 后台管理页面 模块名称 查询 表格展示 分页 实现 可方便嵌入系统 批量替换td内容

277 阅读9分钟

目录

介绍 

后台接口api参数

后台接口返回数据

先上公共包代码

public  ajax回调服务

cookie操作

分页uitll js代码

接下来就是核心的调用 pageUitl 和 回调ajax的 地方了

获取服务并且使用下一次操作的回调方法出现表格,和再次启用回调出下一页分页操作的js

代码介绍

调用代码位置

html代码核心代码

代码思路介绍

css对应的代码

思路介绍

css 表格样式 加 出发事件,这是奇数行 偶数行 和悬浮事件,省去到js中设置

再献上一个批量修改页面表格中 tr td div 中 或 tr td 中的值,判断值超过几位数后变成 添加一个title字段,另外展示改成 几位数加...展示

 加送个便于迁移的css ,直接用这个



介绍 

之前介绍过一款博客,这次在这基础上进行升级更加细化,更加容易嵌入各类型系统,方便调用

再下边有js调用的思路介绍

还有css 和页面的思路介绍 

持续更新 

 

后台接口api参数

 

后台接口返回数据

 

先上公共包代码

public  ajax回调服务

/**
 * 获取数据服务 
 * 示例
   var params = {
            url:"/spccService/sendCheckCode",
            data:{phoneNum:document.getElementById("phoneNum").value},
            callback: function(){alert(data=='success'?'发送成功':'发送失败');}
        };
        getService(params);
 * 
 * @param {*} params  参数
 */
var getService = function(params) {
    params.data.serviceToken = getCookie("serviceToken");
    params.data.time = getCookie("time");
    params.data.userid = getCookie("userid");
    params.data.serverToken = getCookie("serverToken");
    $.ajax({
        type: "POST",
        url: ServerUrl + params.url,
        data: params.data,
        async: true,
        //crossDomain: true,
        // xhrFields: {withCredentials: true},
        success: function(data) {
            if (data == "illegal token") {
                alert("非法请求");
                delCookie("time");
                delCookie("userid");
                delCookie("type");

                window.location = nowHtmlAddressorigin + "/index.html?login=false"
                return;
            }
            params.callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            // 状态码
            console.log(XMLHttpRequest.status);
            // 状态
            console.log(XMLHttpRequest.readyState);
            //错误信息   
            console.log(textStatus);
            alert("异常");
            delCookie("time");
            delCookie("userid");
            delCookie("type");
           

            window.location = nowHtmlAddressorigin + "/index.html?login=false"
            return;
        }
    });
}

 

cookie操作

//设置cookie:
function setCookie(name, value) {
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
}

//读取cookie:
function getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg)) {
        return unescape(arr[2]);
    } else {
        return null;
    }
}

//删除cookie:
//cookie没有提供删除cookie的方法,我们可以设置cookie的参数manAge=0让cookie过期,来达到删除cookie的效果。
function delCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if (cval != null)
        document.cookie = name + "=" + cval + ";path=/;expires=" + exp.toGMTString();
}

 

分页uitll js代码



//公共数据
var superdata = {
    //分页使用
    pageUtil:' <label id="pagingUitl">'
                    +'&nbsp;<span>首页</span>'
                    +'&nbsp;<span>上一页</span>'
                    +'&nbsp;第:<input type="text" id="numPage" style="width:30px;" value="1"/>'
                    +'&nbsp;共:<label id="maxpage">1</label>页'
                    +'&nbsp;<span>跳至页</span>'
                    +'&nbsp;<span>下一页</span>'
                    +'&nbsp;<span>尾页</span>'
                    +'&nbsp;当前页:<label id="nowLineNum">1</label>条'
                    +'&nbsp;共:<label id="totalNum">1</label>条'
              +'</label>',
              
};

/**
 * 添加分页公共分页
 * 
 * test 调用示例
 * 
 *   var pageParams ={
        pageNum:pageNum //当前页数
        ,pageCount:pageCount //一页展示条数
        ,totalNum:totalNum //总条数
        ,id:"#infobody1 .pageUitl" //展示位置
        ,callbackFun:"getUserTask(params.pageNum,params.pageCount);"//回调方法
    }
    addPagingUitl(pageParams);
 * 
 * 
 * @param { 
    *   pageNum :页数
    *   ,pageCount: 一页条数
    *   ,totalNum :总条数
    *   ,id 展示位置
    *   callbackFun:回调方法
    *  } params 
 * 
 *
 */
var addPagingUitl = function(params){
   
    //------------------------------------------1.获取参数---------------------  

    //当前页(必传)
    var pageNum = params.pageNum==null?0:params.pageNum;
    //每页展示条数(必传)
    var nowPageConet = params.pageCount==null?10:params.pageCount;
    //总条数(必传)
    var totalNum = params.totalNum==null?16:params.totalNum;

    //------------------------------------------2.渲染分页页面---------------------  
    //渲染页面 页数 一页条数 总条数  总页数 
    $(params.id).empty().append(superdata.pageUtil);
    
    //------------------------------------------3.添加分页值---------------------  
    //添加分页参数值
    $(params.id+' #pagingUitl #numPage').attr("value",pageNum);//当前页
    $(params.id+' #pagingUitl #maxpage').text(Math.ceil(totalNum/nowPageConet));//总页数
    $(params.id+' #pagingUitl #nowLineNum').text(nowPageConet);//一页展示条数
    $(params.id+' #pagingUitl #totalNum').text(totalNum);//总条数
    
    //------------------------------------------4.设置样式---------------------  
    //设置分页样式 居中
    $(params.id+" #pagingUitl").css("margin-left",((nowbodyWidth-550)/2)+"px")

    //------------------------------------------5.设置样式---------------------  
    //按钮事件 
    $(params.id+" #pagingUitl span").click(function(){
        var nowText = $(this).text();
        var pageNum = parseInt($(params.id+" #pagingUitl #numPage").val());//当前页
        var maxpage = parseInt($(params.id+" #pagingUitl #maxpage").text());//总页数

        if(nowText == "首页"){
            params.pageNum = 1;

        }else if(nowText == "上一页"){
            if(pageNum == 1){
                alert("已经是第一页了!");
                return;
            }
            params.pageNum = pageNum-1;

        }else if(nowText == "下一页"){
            if(pageNum == maxpage){
                alert("已经是最后一页了!");
                return;
            }
            params.pageNum = pageNum+1;

        }else if(nowText == "尾页"){
            params.pageNum = maxpage;

        }else if(nowText=="跳至页"){
            if(pageNum>maxpage || pageNum==0){
                alert("请输入正确页数!");
                return;
            }
            params.pageNum = pageNum;
        }
        eval(params.callbackFun);//执行后回调方法
    });
   

}

 

接下来就是核心的调用 pageUitl 和 回调ajax的 地方了

 

获取服务并且使用下一次操作的回调方法出现表格,和再次启用回调出下一页分页操作的js

var nowOnlyQueryUserid = "";//当前操作对应用户
var getUserTask1 = function(pageNum,pageCount) {
    var params = {
        url: "/deptService/qyglservice/adminQueryUserData",
        data: {
            pageNum: pageNum
            ,pageCount: pageCount
            ,userPhone  :$("#userPhone").val()
            ,userName  :$("#userName").val()
            ,queryid  :$("#queryid1").val()
        },
        callback: function(data) {  getUserTaskCallback1(data,pageNum,pageCount); }
    };
    getService(params);
}

var getUserTaskCallback1 = function(data,pageNum,pageCount) { //展示表格
    var params = {
            element: "#body2 .infoIn",
            data: data.data,
            totalNum: data.totalCount,
            thead: ["编号", "名称"     , "手机号" , "创建时间"   , "标签", "备注","密录失败","验证败    ","操作"],
            tbody: ["id"  , "name", "phone", "create_time", "label", "remarks","passwornumber","phonlogin_number"],
            callback: function() { console.log(data) }
        }
        // public.tableUitl(params);
        //需要特别操作的写单独内容
    var element = params.element,
        data = params.data,
        thead = params.thead,
        totalNum=params.totalNum,
        tbody = params.tbody;
    // callback=params.callback;

    //表格内容info    
    var htmlTheadVal = "";
    var htmlTbodyVal = "";
    for (let i = 0; i < thead.length; i++) { //写入表格头
        htmlTheadVal += '<th>' + thead[i] + '</th>';
    }
    for (let i = 0; i < data.length; i++) { //写入表格体
        htmlTbodyVal += '<tr>';
        for (let j = 0; j < tbody.length; j++) {
            var nowHtml = "";
            if (tbody[j].indexOf('time') != -1) {
                nowHtml = formatDateTime(data[i][tbody[j]]);
            }else if(tbody[j]=="phone"){
                nowHtml = data[i][tbody[j]]+"****";
            }else{
                nowHtml = data[i][tbody[j]] == null ? "&nbsp;" : data[i][tbody[j]];
            }
            htmlTbodyVal += '<td><div>' + nowHtml + '</div></td>';
            if (j == tbody.length - 1) {
                nowHtml = '<span idkey="' + data[i]["id"] + '">查看权限</span>';
                htmlTbodyVal += '<td><div>' + nowHtml + '</div></td>';
            }
        }
        htmlTbodyVal += '</tr>';
    }
    var htmlThead = "<thead><tr>" + htmlTheadVal + "</tr></thead>";
    var htmlTbody = "<tbody>" + htmlTbodyVal + "</tbody>";
    var htmlTable = "<table>" + htmlThead + htmlTbody + "</table>";

    $(element).empty().append(htmlTable);
    
    $(element + ' span').click(function() {
        var idkey = $(this).attr("idkey");
        nowOnlyQueryUserid = idkey;
        var params = { //查看版本具体数据
            url: "/deptService/qyglservice/queryUserAllDept",
            data: {
                pageNum: 1,
                pageCount: 200,
                queryid: idkey
            },
            callback: function(data) {
                //展示权限页面
                clearAllBodyOpenOnly("#onlyUserAlldept");
                getUserTaskDeptCallback1(data);
            }
        };
        getService(params);
    });

    //加载分页
    var pageParams ={
        pageNum:pageNum
        ,pageCount:pageCount
        ,totalNum:totalNum
        ,id:"#body2 .pageUitl"
        ,callbackFun:"getUserTask1(params.pageNum,params.pageCount);"
    }
    addPagingUitl(pageParams);

}

代码介绍

1.最上边显示走了一个js的ajax回调,

2.传入值的时候要带上页面中查询的参数,直接放入ajax的参数中

3.带上分页参数,这个在后边的分页回调中会使用上

4.返回的数据通过调用回调展示到表格中,表格通过js 字符串拼接出来

5.在页面加载完毕后加载调用分页回调,只有最好加载,的才能调用之前页面js document中的内容

6.所以这里后调用的都要在  $(element).empty().append(htmlTable);之后写

7.这里还有表格中的点击事件,如果还有其他事件都可以在这里添加,回调中可以写任意东西

8.也可以在回调的位置直接写内容,不用回调方法

9.各种写法都方便扩展,可随意扩展

10.使用的时候,直接先吧前几个js拷贝,然后吧上边这个js直接拷贝使用即可

11.这里使用到了 公共变量 nowOnlyQueryUserid  这个是可以自定义的,不推荐使用可以使用回调代值

12. ok总的思路就是这些,有需要沟通的随时沟通

 

调用代码位置

//公共js包中方这个
var globalNowPage={pageNum:1,pageCount:10}
//单独页面中设置这个
globalNowPage.pageNum=1;
globalNowPage.pageCount=10;  
//调用上边的方法,要传入分页,第一页和对应的每页展示条数
$("#body2 .search #submit").click(function(){//用户管理搜索
        getUserTask1(globalNowPage.pageNum,globalNowPage.pageCount);
    });
//除搜索调用外还有,初始点击页面的时候加载,页调用getUserTask1即可

 

html代码核心代码

 <!-- 在线用户管理模块 -->
    <div class="infobody" id="body1">
        <!-- 标题 -->
        <div class="title"><label>在线用户管理</label></div>
        <!-- 搜索 -->
        <div class="search">
            用户id:<input type="text" id="user_id">
            访问ip:<input type="text" id="requestip">
            用户名:<input type="text" id="username">
            在线状态:<select id="onlineType">
                <option value="">全部</option>
                <option value="1">在线</option>
                <option value="0">离线</option>
            </select>
            在线id:<input type="text" id="queryid">
            <input type="button" id="submit" value="搜索" />
        </div>
        <!-- 内容 -->
        <div class="infoIn"></div>
        <!-- 分页 -->
        <div class="pageUitl"></div>
    </div>

代码思路介绍

1.这写代码中第一个div  class="infobody" id="body1"  

2. class=infobody 在css设置样式  进行统一化,id=body1  进行单独化

3.js中加载或操作的时候使用id进行加载加事件 点击悬浮等等

4.让这个代码随意嵌入任何位置,可从infobody 这个css进行修改,宽度嵌入到对应的页面中

5.或通过iframe的方式进行加载 infobody 设置最大宽度即可,然后嵌入页面的设置宽高大小即可

6. 使用 iframe的优势及是 在写项目大后便于多人开发,没人一个单独的代码文件,嵌入到总的iframe的服务中去

7. 总页面iframe 进行对应的按钮绑定对应的页面地址,加载,这样会很方便加载宽度页会很方便的自动适应起来 ok

 

css对应的代码

.infobody{
    background:#000;
}
.infobody .title{
    height:30px;
    line-height:30px;
    background:rgb(197, 194, 194);
    padding-left:10px;
}
.infobody .search{
    line-height:30px;
    background:rgb(216, 211, 211);
    /* padding-left:10px;   */
      float: left;
    width: 100%;
}
.infobody .search input{
   width:100px;
}
.infobody .infoIn{
    float: left;
    width: 100%;
    background:rgb(216, 211, 211);
}
.infobody .pageUitl{ float: left;
    width: 100%;
    height:50px; line-height:50px;
    background:rgb(167, 163, 163);
}
table{
    width:100%;
    text-align:center;
    line-height:30px;
}

思路介绍

这是一些基础代码,可再进行扩展代码,

总的思路是 宽度定义好即可

 

css 表格样式 加 出发事件,这是奇数行 偶数行 和悬浮事件,省去到js中设置

/* 奇数行 */
table tbody tr:nth-child(odd){
    background: #ffffff;
}
/* 偶数行 */
table tbody tr:nth-child(even){
    background: #EBF5FF;
    /* transform:background 0.6s ; */
    /* transition:background 1s ; */
}
/* 悬浮事件 */
#tableajzx1GRWQZ table tbody tr:hover{
    /* background:#def4ff; */
    background:#cfefff;
}  

 

 

 

再献上一个批量修改页面表格中 tr td div 中 或 tr td 中的值,判断值超过几位数后变成 添加一个title字段,另外展示改成 几位数加...展示


//遍历全文tr td  超过字数的后边用... 当前tr添加 title 
/**
 * 遍历全文tr td  超过字数的后边用... 当前tr添加 title 
 * 
 * updateTableTbodyTrTdInfo("table tbody tr td",7);
 * @param {*} ele tbody元素
 * @param {*} num 字数
 */
var updateTableTbodyTrTdInfo = function(ele,num){
    console.log(ele)
    $.each($(ele),function(k,y){
        var nowRest = $(this);
        if(nowRest.text().length>num){
            nowRest.attr("title",nowRest.text());
            nowRest.text(nowRest.text().substr(0,num)+"...");
        }else{
            //不做任何操作
        }
       
    });
}

这个再这里好像没用,这个使用方法也如上边说的一样

加载放到js最后调用即可,快速批量更新页面表格内容

 

 加送个便于迁移的css ,直接用这个

.search input,select{
    width:100px;
    height:26px;
    line-height:26px;
    margin:10px auto;
}
.search {
    padding-left:10px;
    text-align: left;
}
.search #submit{
    background-color: #2C8CF0;
    color:#fff; 
    cursor:pointer;
}

 

 

 

 

极限升级 更方便的调用方式js


var getDataToTabeleTask1 = function(pageNum,pageCount) {
    globalNowPage.pageNum=pageNum;
    globalNowPage.pageCount=pageCount;
    var params = {
        url: "/Service/query?zp_wqr_type=sxs",
        data: {
            pageNum:  globalNowPage.pageNum
            ,pageCount: globalNowPage.pageCount
            ,zp_name  :$("#queryName").val()
            ,queryid  :$("#queryId").val()
            ,zp_zuozhe  :$("#queryAuthor").val()
        },
        callback: function(data) {  
            //表格加载数据
            addTableGrewqrYXBGV2(data);

            //字数多得简字+...
            updateTableTbodyTrTdInfo(" #tableajzx1GRWQZ table tbody tr td div",7);
            //加载分页
            var pageParams ={
                pageNum: globalNowPage.pageNum
                ,pageCount:globalNowPage.pageCount
                ,totalNum:data.totalCount
                ,id:".index3 .pageUitl"//新模块修改位置
                ,callbackFun:"getDataToTabeleTask1(params.pageNum,params.pageCount);"//新模块修改位置
            }
            addPagingUitl(pageParams);
        }
    };
    getService(params);
}
//搜索
$(".index3 #submit").click(function(){
    getDataToTabeleTask1(globalNowPage.pageNum,globalNowPage.pageCount);
});

 

 

 

 

 

 

 

success  ok

 

 

 

 

持续更新