FastAdmin表格扩展统计信息

FastAdmin表格默认只有分页信息,但不包含某列的总和或更丰富的统计信息。

但是通过表格的扩展功能,可以达到这一目的。

依旧是控制器+模板+JS配合实现。

1. 控制器

修改控制器的index方法,在返回的$result数组中加入extend项,写入自己要添加的统计数据,示例如下

public function index(){
        //设置过滤方法
        $this->request->filter(['strip_tags']);
        if ($this->request->isAjax()) {
            //如果发送的来源是Selectpage,则转发到Selectpage
            if ($this->request->request('keyField')) {
                return $this->selectpage();
            }
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
            $total = $this->model
                ->where($where)
                ->order($sort, $order)
                ->count();

            $list = $this->model
                ->where($where)
                ->order($sort, $order)
                ->limit($offset, $limit)
                ->select();

            $total_num = $this->model->where($where)->sum('num');
            $total_deal = $this->model->where($where)->sum('deal');
            $total_mum = $this->model->where($where)->sum('mum');

            $result = array("total" => $total, "rows" => $list);

            $result['extend'] = [
                'total_num' => $total_num,
                'total_deal' => $total_deal,
                'total_mum' => $total_mum,
            ];

            return json($result);
        }
        return $this->view->fetch();
    }

2. 模板

修改模板 index.html,在合适的位置加入你要显示的内容,示例如下

 <div style="margin-top: 20px;font-size: 16px;">
    总数量:<span id="total_num"></span>,
    已确认数量:<span id="total_deal"></span>,
    总金额:<span id="total_mum"></span>
 </div>

3. JavaScript文件

修改对应的JS文件,在行 Table.api.bindevent(table);下面添加如下代码:

//表格加载成功事件
    table.on('load-success.bs.table', function (e, data) {
        $("#total_num").text(data.extend.total_num);
        $("#total_deal").text(data.extend.total_deal);
        $("#total_mum").text(data.extend.total_mum);
    });

这样一来当表格成功加载或刷新时,控制器返回的数据就会显示在页面上了。

Leave a Comment

豫ICP备19001387号-1