tp8+layui tab切换带分页

发布于:2025-02-11 ⋅ 阅读:(24) ⋅ 点赞:(0)
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Demo</title>
    <!-- 请勿在项目正式环境中引用该 layui.css 地址 -->
    <link href="//unpkg.com/layui@2.9.21-rc.3/dist/css/layui.css" rel="stylesheet">
    <style>
        .news-list li{margin-top: 15px;}
        .news-list li span{margin-left: 10px; float: right;}
    </style>
</head>
<body>
<div class="layui-container">
    <div class="layui-tab layui-tab-card" lay-filter="demo-tab">
        <ul class="layui-tab-title">
            <li class="layui-this">全部({$listCount1})</li>
            <li>已回复({$listCount2})</li>
            <li>未回复({$listCount3})</li>
        </ul>
        <div class="layui-tab-content">
            <div class="layui-tab-item layui-show layui-padding-3">
                <div class="news-list" id="list1">
                    <ul>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                    </ul>
                </div>
                <div id="page1"></div>
            </div>
            <div class="layui-tab-item layui-padding-2">
                <div class="news-list" id="list2">
                    <ul>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                    </ul>
                </div>
                <div id="page2"></div>
            </div>
            <div class="layui-tab-item layui-padding-2">
                <div class="news-list" id="list3">
                    <ul>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                        <li><a href="?id=1" target="_blank">老人的社保如何缴纳?</a><span>2024-12-05</span></li>
                    </ul>
                </div>
                <div id="page3"></div>
            </div>
        </div>
    </div>
</div>

<!-- 请勿在项目正式环境中引用该 layui.js 地址 -->
<script src="//unpkg.com/layui@2.9.21-rc.3/dist/layui.js"></script>
<script>
    layui.use(function () {
        const laypage = layui.laypage;
        const $ = layui.$;

        // 通用分页渲染函数
        function renderPagination(elemId, category, listId, count) {
            laypage.render({
                elem: elemId,
                count: count, // 总数据量
                curr: 1, // 当前页
                limit: 2, // 每页显示数量
                theme: '#1E9FFF',
                jump: function (obj, first) {
                    console.log(obj.curr); // 得到当前页,以便向服务端请求对应页的数据。

                    // 首次加载时自动请求第一页的数据
                    if (!first) {
                        $.get('http://localhost/index/demo/getData/', {
                            "page": obj.curr,
                            "category": category,
                            "rnd": new Date().getTime()
                        }, (res) => {
                            let strHtml = '';
                            // 遍历返回的数据生成 HTML
                            for (let i = 0; i < res.data.length; i++) {
                                strHtml += `<li><a href="?id=${res.data[i].id}">${res.data[i].title}</a><span>${res.data[i].created_at}</span></li>`;
                            }
                            // 更新对应列表
                            $(`#${listId} ul`).html(strHtml);
                        }, 'json');
                    } else {
                        // 如果是首次加载,则加载第一页的数据
                        $.get('http://localhost/index/demo/getData/', {
                            "page": 1,
                            "category": category,
                            "rnd": new Date().getTime()
                        }, (res) => {
                            let strHtml = '';
                            for (let i = 0; i < res.data.length; i++) {
                                strHtml += `<li><a href="?id=${res.data[i].id}">${res.data[i].title}</a><span>${res.data[i].created_at}</span></li>`;
                            }
                            $(`#${listId} ul`).html(strHtml);
                        }, 'json');
                    }
                }
            });
        }

        // 调用封装的分页渲染函数,分别为不同的分类
        renderPagination('page1', 1, 'list1', {$listCount1});
        renderPagination('page2', 2, 'list2', {$listCount2});
        renderPagination('page3', 3, 'list3', {$listCount3});
    });
</script>
</body>
</html>

backend code:

    /**
     * 显示资源列表
     *
     * @return View
     */
    public function index():View
    {
        $listCount1 = Db::name('news')->where('category',1)->count();
        $listCount2 = Db::name('news')->where('category',2)->count();
        $listCount3 = Db::name('news')->where('category',3)->count();
        return view('/list',['listCount1'=>$listCount1,'listCount2'=>$listCount2,'listCount3'=>$listCount3]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return Json
     * @throws DataNotFoundException
     * @throws DbException
     * @throws ModelNotFoundException
     */
    public function getData():Json
    {
        $category = input('get.category/d');
        $page = input('get.page/d');
        $offset = ($page - 1) * 2;
        $count = Db::name('news')->where('category',$category)->count();
        $data = Db::name('news')->where('category',$category)->limit($offset,2)->select();
//        dd($data);
        return json(['code' => 200, 'msg' => 'success', 'count' => $count, 'data' => $data]);
    }

the end.


网站公告

今日签到

点亮在社区的每一天
去签到