专栏首页胡六娃的博客laravel-admin自定义列表按钮,并带swal弹窗效果

laravel-admin自定义列表按钮,并带swal弹窗效果

use Encore\Admin\Facades\Admin;
    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        $grid = new Grid(new Order);

        $grid->model()->where(function ($query) {
            $query->where([
                ['start_time', '<', date("Y-m-d", time())],
            ])->orwhere([
                ['start_time', '>=', date("Y-m-d", time())],
            ]);
        })->whereIn('state', [6, 7]);

        $grid->model()->orderByDesc('created_at');

        $grid->orderid('订单ID');
        $grid->user()->wx_name('用户名');
        $grid->user()->phone('用户手机号');
        $grid->aircraft()->name('地点');
        $grid->aircraftType()->name('入口');

        $grid->type('服务类别')->display(function ($cert) {
            $certArr = [
                1 => ['text' => '休息室', 'color' => 'danger'],
                2 => ['text' => '快速安检', 'color' => 'success'],
                3 => ['text' => '快速登机', 'color' => 'primary'],
                4 => ['text' => '代办值机', 'color' => 'info'],
                5 => ['text' => '接机', 'color' => 'success'],
                6 => ['text' => '送机', 'color' => 'info'],
                8 => ['text' => 'VIP', 'color' => 'danger'],
                9 => ['text' => 'VVIP', 'color' => 'primary'],
            ];
            return "<span class='label label-" . $certArr[$cert]['color'] . "'>" . $certArr[$cert]['text'] . "</span>";
        });
        $grid->amount('金额')->sortable();
        $grid->updated_at('预约时间')->sortable();
        $grid->state('状态')->display(function () {
            $state = $this->state;
            $certArr = [
                6 => ['text' => '待退款', 'color' => 'danger'],
                7 => ['text' => '退款成功', 'color' => 'success'],
            ];
            return "<span class='label label-" . $certArr[$state]['color'] . "'>" . $certArr[$state]['text'] . "</span>";
        });

        $grid->disableCreateButton();
        $this->script = <<<EOT
        $('.grid-row-pass').unbind('click').click(function() {
            var id = $(this).data('id');

            swal({
                title: "确认通过该用户的退款申请吗?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "确认",
                showLoaderOnConfirm: true,
                cancelButtonText: "取消",
                preConfirm: function() {
                    $.ajax({
                        method: 'get',
                        url: '/admin/refund/' + id,
                        success: function (data) {
                            console.log(data);
                            $.pjax.reload('#pjax-container');
                            if(data.code){
                                swal(data.msg, '', 'success');
                            }else{
                                swal(data.msg, '', 'error');
                            }
                        }
                    });
                }
            });
        });
EOT;
        Admin::script($this->script);

        $grid->filter(function ($filter) {
            $filter->disableIdFilter();
            $filter->equal('orderid', '订单ID');
            $filter->equal('aircraft_id', '地点')->select('data-aircrafts');
            $filter->equal('type', '服务类别')->radio([
                '' => '全部',
                8 => 'VIP',
                9 => 'VVIP',
            ]);
            $filter->between('created_at', '时间')->datetime();
        });
        $grid->actions(function (Grid\Displayers\Actions $actions) {
            $actions->disableView();
            $actions->disableEdit();
            $actions->disableDelete();
            if ($actions->row->state == 6) {
                $actions->append("<div class='mb-5'><a class='btn btn-xs action-btn btn-primary grid-row-pass' data-id='{$actions->getKey()}'><i class='fa fa-check'></i>退款</a></div>");
            }
        });

        return $grid;
    }

ajax中请求的路由里处理确认后的逻辑,重点代码适当加粗了,请仔细查看

实现效果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • php使用openssl进行Rsa长数据加密(117)解密(128)

    最近在使用rsa加密,字符串过长是总是自动截取,百度了发现是rsa对加密字符有长度的限制

    用户4973967
  • window下安装docker

    下载地址:最新版 Toolbox 下载地址: https://www.docker.com/get-docker

    用户4973967
  • PHPExcel随笔

    用户4973967
  • 好雨云帮一周问答集锦(2017.02.13-2017.02.19)

    A: 应用的输出日志会按天保存在管理节点的 /grdata/downloads/log目录下。为方便从控制台 “日志” 标签页进行下载,管理节点的nginx提供...

    Rainbond开源
  • 好雨云帮一周问答集锦(2017.02.13-2017.02.19)

    Rainbond开源
  • 源码分析MySQL mysql_real_query函数

    Review一同事的C++代码,发现其中有一个拼接而成的多记录INSERT语句可能超大(预计最大可超过1M,甚至10M也有可能,视实际记录条数而定)。担心包...

    一见
  • mysql 大数据量的分页优化

    使用limit进行分页,翻到10000多页后效率低 原因 limit offset 会逐行查找,是先查询再跳过 优化思路 (1)从业务逻辑 不允许翻过100页,...

    dys
  • mysql数据库主从同步

     2、登录mysql,创建mysql用户(或者使用已经存在的也行),并且给予只能进行主从同步

    Sindsun
  • 「小程序JAVA实战」小程序的基础组件(24)

    IT故事会
  • 小程序-实现竖排文字(二)

    前一篇文章《小程序-实现竖排文字》只说了一个解决方案,这次再说一些别的解决方案。 把每一句古诗竖排布局,wxml 代码结构: <view class="mod-...

    前端黑板报

扫码关注云+社区

领取腾讯云代金券