使用Layui和Vue实现分页

参考这位大哥的:https://www.cnblogs.com/subendong/p/9232548.html

效果图:

前端代码部分

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="../../lib/layui.css" media="all" />
</head>
<body>

<!--列表-->
<div id="vueContainer">
<!--     <div className="layui-row layui-col-space2">
        <div class="layui-col-md1">
            <input type="text" v-model="searchId" required lay-verify="required" placeholder="id" class="layui-input" autocomplete="off"/>
        </div>
        <div class="layui-col-md1">
            <button id="btn2"  class="layui-btn" @click.prevent="search()">搜索</button>
        </div>
    </div> -->
    <table class="layui-table" lay-filter="test">
        <thead>
        <tr>
            <th>序号</th>
            <th>定时名称</th>
            <th>业务编码</th>
            <th>业务名称</th>
            <th>定时开始时间</th>
            <th>详情</th>
            <th>日志级别</th>
            <th>修改</th>
            <th>删除</th>
        </tr>
        </thead>
        <tbody>
        <tr v-for="item in dataList" :key="item.id">
            <td>{{item.id}}</td>
            <td>{{item.timerName}}</td>
            <td>{{item.businessCode}}</td>
            <td>{{item.businessName}}</td>
            <td>{{item.timerStartTime}}</td>
            <td>{{item.detail}}</td>
            <td>{{item.logLevel}}</td>
            <th>
                <a class="layui-btn layui-btn-normal" @click.prevent="upd(item.id)">修改</a>
            </th>
            <th>
                <button class="layui-btn layui-btn-danger" @click.prevent="del(item.id)">删除</button>
            </th>
        </tr>
        </tbody>
    </table>
</div>

<!--分页容器-->
<div id="pagination"></div>

<script src="../../plugin/jquery/jquery.min.js"></script>
<script src="../../layui/layui.js"></script>
<script src="../../lib/vue-2.4.0.js"></script>
<script src="../../js/timer/index.js"></script>
</body>
</html>

index.js

//使用Vue渲染模板,初始化时是没有数据的,需要ajax请求拿到数据
var vue = new Vue({
    el: "#vueContainer",
    data: {
        dataList: null
    }
});

//使用layui分页
layui.use(‘laypage‘, function () {
    var laypage = layui.laypage;
    laypage.render({
        elem: ‘pagination‘
        , count: totalCount
        ,limits: [5,10,15,20,50] //设置条数可以选择显示多少条
        , layout: [‘count‘, ‘prev‘, ‘page‘, ‘next‘, ‘limit‘, ‘refresh‘, ‘skip‘]
        , jump: function (obj, first) {
            //点击非第一页页码时的处理逻辑。比如这里调用了ajax方法,异步获取分页数据
            if (!first) {
                pagination(obj.curr, obj.limit);//第二个参数不能用变量pageSize,因为当切换每页大小的时候会出问题
            }
        }
    });
});

var pageIndex = 1;
var pageSize = 10;
var totalCount = 0;
pagination(pageIndex, pageSize);
function pagination(pageIndex, pageSize) {
    //查询条件
    var param = {
        page: pageIndex,
        rows: pageSize,
        //其它查询条件可在下面添加
    };
    //后台数据接口
    $.ajax({
        type: ‘GET‘,
        url: ‘http://127.0.0.1:8080/api/v1/timer/query‘,
        // dataType: ‘json‘,
        data: param,
        async: false,//这里设置为同步执行,目的是等数据加载完再调用layui分页组件,不然分页组件拿不到totalCount的值
        success: function (result) {
            console.log(result);
            vue.dataList = result.data.list;
            totalCount = result.data.totalRows;
        }
    });
};

后端java代码

    @ApiOperation(value = "查询定时任务登记列表")
    @GetMapping(value = "/query")
    public RespResult queryTimer(Integer page,Integer rows,String timerName){

        Map<String,Object> params = new HashMap<>();
        if (StringUtils.isNotBlank(timerName)){
            params.put("timerName",timerName);
        }
        params.put("pageNo",page);
        params.put("pageSize",rows);
        PageInfo<TimerInfo> timerInfoPageInfo = timerService.queryTimerList(params);
        return RespResult.SUCCESSFUL(timerInfoPageInfo);
    }

原文地址:https://www.cnblogs.com/lfyu/p/11982081.html

时间: 2024-10-09 19:59:53

使用Layui和Vue实现分页的相关文章

基于Vue封装分页组件

使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} .page-bar { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-sel

Layui 点击查询分页,页码不刷新解决方法

Layui 点击查询分页,页码不刷新解决方法 function queryDataGrid() { layui.table.reload(tableName, { where: { //设定异步数据接口的额外参数,任意设 columnName: layui.$("#columnName").val(), columnValue: layui.$("#columnValue").val(), QueryStr: "", state: layui.$

新人 记录VUE中分页实现

关于函数传值 this.getPurchaseHistoryData(index, num,timeType);第一位是显示的页数,第二是控制首页4上一页-1下一页是2末页是5 第三是是对昨天是1,今天是2,还是一段时间的控制传3,默认是0 1.关于分页:(1)首页是4上一页是-1下一页是2末页是5,单机查询的时候是1(2)关于pageRecord 函数 currentRecord表示当前页数,showItemRecord表示共⑤页(3)current >= showItem和else{}是用来

layui前端框架之分页

框架环境:SSM框架 为了保证效果,此次演示也用到了jQuery ui框架,大家最好也引入进来 一.去layui官网下载包,解压后,然后导入文件中,最好放再main/webapp文件夹下 官网地址如下:http://www.layui.com/ 二.新建实体类 package cn.pms.model; import java.util.Date; public class Employee { /** 工号*/ private String employeeNo; /** */ private

semantic、vue 使用分页组件和日历插件

最近正在试试semantic-ui,结合了vue,这里忍不住吐槽semantic和vue的友好度简直不忍直视,不过既然用了,这里就分享几个用到的插件了 1.分页组件(基于vue) var pageComponent = Vue.extend({ template: `<div class="ui floated pagination menu"> <a class="icon item" :class="{\'disabled\':cur

Vue 实现分页+输入框关键字筛选

分页的实现(Vue+Element)+输入框关键字筛选 1.这里用的是Element 自带的分页组件 <template> <div class="sales-table"> <div class="order-list-header">订单列表</div> <div class="back-box"> <div class="search-box">&l

关于Layui的表格中分页处理

table.render({ elem: '#test' ,height:'full-125' ,url:'data.php' ,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增 ,page:true ................................. 1.要有page:true,开启分页.加入这一句,就可以在表格下方出现页面选择和跳转的 组件了. 2.第一步做完后出现的页面组件,点击时,是没有办法跳转页面的,因为还需要返回数据的u

layui+thinkphp5.1实现分页(非动态表格)

框架:前段layui 后端thinkphp5.1 js:layui laypage.render({ elem:'paging' //数据总数 ,count:{$total_num} //当前页面大小 ,limit:{$pageSize} //当前页 ,curr:{$page} ,jump:function(obj,frist){ if(!frist){ window.location.href = '/index/user/list_user?page='+obj.curr; } }}); p

vue 查询分页

后端用的flask,前端vue,查询结果展示以及分页 如图: 代码如下: 前端: 1 <template> 2 <div> 3 <el-row> 4 <el-col :span="18"> 5 <el-form :inline="true" :model="test_query"> 6 <el-form-item label="查询条件1"> 7 <