在ThinkAdmin中增加显示数据表格汇总金额

本文介绍了如何在ThinkPHP框架中利用PageHelper库结合LayUI实现表格数据的统计功能。首先,在PHP代码中根据GET参数计算数据总和,并在响应中返回。接着,在前端JavaScript中解析并显示统计数据,同时更新对应的DOM元素。此外,展示了如何处理多个统计参数的情况,包括在HTML中添加隐藏字段,JavaScript中解析数据以及PHP中处理多个统计字段的逻辑。
摘要由CSDN通过智能技术生成

1.在vendor/zoujingli/think-library/src/helper/PageHelper.php
 


    public function layTable($dbQuery, string $template = ''): array
    {
        if ($this->output === 'get.json') {
            // 原有代码
        }
        if ($this->output === 'get.layui.table') {
            
            // 原有代码,下面为增加的代码
            if(isset($get['sunar_sum']) && $get['sunar_sum']){
                $sum = $query->sum($get['sunar_sum']);
                $result['sum'] = $sum;
            }
            $this->xssFilter($result['data']);
            // 原有代码
        } else {
            $this->class->fetch($template);
            return [];
        }
    }

2.在public/static/admin.js 中option.done里面增加

            option.done = function () {
                // code
            }, option.parseData = function (res) {
                if(res.sum){
                    $('#sunar_sum').html(res.sum)
                }
                // code
                return res;
            };

3.在页面增加名为sunar_sum的元素,放到search的from部分

<input type="hidden" name="sunar_sum"  value="{$get.sunar_sum|default='b.amount_pay'}">

例如上面这个就是增加一个统计b表的amount_pay

如果要统计多个参数的话也是按照上面的步骤:

1.在页面增加参数


<div class="layui-tab-card">
    <div class="layui-col-xs12 layui-col-md12" >   
        <div class="think-box-notify" type="info">
            人数:<b class="color-blue padding-left-5" data-extra="pre"><label class="sunar_count">{$total.count}</label> 人</b> | 
            实发金额合计<b class="color-blue padding-left-5" data-extra="pre">¥<label class="amount_pay">{$total.amount_pay}</label></b> | 
            开票金额<b class="color-blue padding-left-5" data-extra="pre">¥<label class="amount">{$total.amount}</label></b>
        
        </div>    
        <div class="think-box-shadow">
            <div class="layui-tab-content">
                <form action="{:sysuri()}" autocomplete="off" class="layui-form layui-form-pane form-search" method="get" onsubmit="return false">
                    <div class="layui-form-item layui-inline">
                        <label class="layui-form-label">工作人员</label>
                        <label class="layui-input-inline">
                            <input class="layui-input" name="name" placeholder="请输入工作人员姓名|号码|身份证号" value="{$get.name|default=''}">
                            <input type="hidden" name="sunar_sum[amount_pay]"  value="{$get.sunar_sum|default='b.amount_pay'}">
                            <input type="hidden" name="sunar_sum[amount]"  value="{$get.sunar_amount|default='b.amount'}">
                        </label>
                    </div>
                    <div class="layui-form-item layui-inline">
                        <button class="layui-btn layui-border-blue layui-btn-primary"><i class="layui-icon">&#xe615;</i> 查 询</button>
                    </div>
                </form>
                <table id="NewsTable" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
            </div>
        </div>
    </div>
</div>

2.在public/static/admin.js 中option.done里面增加

            option.parseData = function (res) {
                if(res.sum){
                    $('.sunar_count').html(res.count)
                    for (var key in res.sum) {
                        if (res.sum.hasOwnProperty(key)) {
                            $('.'+ key).html(res.sum[key])
                        }
                    }
                }
                //...
            };

3.在vendor/zoujingli/think-library/src/helper/PageHelper.php,layTable方法中的get.layui.table加入一下代码

            if(isset($get['sunar_sum']) && $get['sunar_sum']){
                if(is_array($get['sunar_sum'])){
                    foreach ($get['sunar_sum'] as $key => $value) {
                        $sum = $query->sum($value);
                        $result["sum"][$key] = $sum;
                    }
                }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值