Fastadmin前端使用表格及其表格的操作二(Bootstrap-table)

Fastadmin前台表格操作系列二

前台使用bootstrap-table表格及其表格操作


文章目录

前言

一、fastadmin三大操作按钮?

1.btn-dialog(弹窗按钮):

2.btn-ajax(ajax提交按钮):

3.btn-addtabs(打开新标签按钮):

二、前台使用步骤

1.btn-ajax

2.btn-dialog

总结


前言

在前面的Fastadmin前台表格操作系列一中,我们已经把bootstrap-table表格成功移植到前台,并且数据显示是正常的。但是!!!!如果是跟我一样拿前台的user.js改的,不是使用后台生成的js复制粘贴到frontend的话,就会出现我们后台的btn-dialog(弹窗按钮),btn-ajax(ajax提交按钮),btn-addtabs(打开新标签按钮)这三大主要按钮都会失效,会变成跳转的,这个时候我们还是手动写一下Js,防止新同学不会(我也是刚学的)、不知道在哪写Js,所以我这里做一下示范。


提示:以下是本篇文章正文内容,下面案例可供参考

一、fastadmin三大操作按钮?

btn-dialog(弹窗按钮),btn-ajax(ajax提交按钮),btn-addtabs(打开新标签按钮)

顾名思义就是在fastadmin后台生成按钮时添加对应的属性,就能生成对应的操作按钮

{
                            field: 'buttons',
                            width: "120px",
                            title: __('操作'),
                            table: table,
                            events: Table.api.events.operate,
                            buttons: [
                                {
                                    name: 'send',
                                    text: __('审核'),
                                    title: __('审核'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/check',
                                },
                                {
                                    name: '退款',
                                    text: __('退款'),
                                    title: __('退款'),
                                    classname: 'btn btn-xs btn-primary btn-ajax btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/refundMoney',
                                },
                                {
                                    name: '收货确认',
                                    text: __('收货确认'),
                                    title: __('收货确认'),
                                    classname: 'btn btn-xs btn-primary btn-addtabs btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/confirmRefund',
                                },
                                
                            ],
                            formatter: Table.api.formatter.buttons,operate:false
                        }

对应的效果:

1.btn-dialog(弹窗按钮):

2.btn-ajax(ajax提交按钮):

3.btn-addtabs(打开新标签按钮):

这一组按钮还是在日后的开发过程中可能会经常用到的,我把所有的代码贴出来,后面如果想用就可以直接复制粘贴:按钮组不做隐藏

{
                            field: 'buttons',
                            width: "120px",
                            title: __('操作'),
                            table: table,
                            events: Table.api.events.operate,
                            buttons: [
                                {
                                    name: 'send',
                                    text: __('审核'),
                                    title: __('审核'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/check',
                                },
                                {
                                    name: '退款',
                                    text: __('退款'),
                                    title: __('退款'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/refundMoney',
                                },
                                {
                                    name: '收货确认',
                                    text: __('收货确认'),
                                    title: __('收货确认'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/confirmRefund',
                                },
                                {
                                    name: '发货',
                                    text: __('发货'),
                                    title: __('发货'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/delive',
                                },
                                {
                                    name: 'detail',
                                    text: __('查看'),
                                    title: __('查看详情'),
                                    classname: 'btn btn-xs btn-info btn-dialog btn-check',
                                    icon: 'fa fa-file-text-o',
                                    url: 'refund/refundreturn/detail',

                                },
                            ],
                            formatter: Table.api.formatter.buttons,operate:false
                        }

做隐藏:按条件。

{
                            field: 'buttons',
                            width: "120px",
                            title: __('操作'),
                            table: table,
                            events: Table.api.events.operate,
                            buttons: [
                                {
                                    name: 'send',
                                    text: __('审核'),
                                    title: __('审核'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/check',
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        //console.log(row);
                                        if(row.status==0 ){
                                            return true;
                                        }else {
                                            return false;
                                        }

                                    },

                                },
                                {
                                    name: '退款',
                                    text: __('退款'),
                                    title: __('退款'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/refundMoney',
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        //在仅退款并已同意 或者在退货退款且已收到买家寄回的物品后
                                        if ((row.type == 0 && row.status == 1) || (row.type == 1 && row.status == 3)) {
                                            return true;
                                        }else {
                                            return false;
                                        }

                                    },

                                },
                                {
                                    name: '收货确认',
                                    text: __('收货确认'),
                                    title: __('收货确认'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/confirmRefund',
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        //console.log(row);
                                        if((row.type !=0 && row.status == 2) ){
                                            return true;
                                        }else {
                                            return false;
                                        }

                                    },

                                },
                                {
                                    name: '发货',
                                    text: __('发货'),
                                    title: __('发货'),
                                    classname: 'btn btn-xs btn-primary btn-dialog btn-check',
                                    icon: 'fa fa fa-send',
                                    url: 'refund/refundreturn/delive',
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        //console.log(row);
                                        if((row.type ==2 && row.status == 3) ){
                                            return true;
                                        }else {
                                            return false;
                                        }

                                    },

                                },
                                {
                                    name: 'detail',
                                    text: __('查看'),
                                    title: __('查看详情'),
                                    classname: 'btn btn-xs btn-info btn-dialog btn-check',
                                    icon: 'fa fa-file-text-o',
                                    url: 'refund/refundreturn/detail',
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        return true;

                                    }
                                },
                            ],
                            formatter: Table.api.formatter.buttons,operate:false
                        }

但是这一套方法,在前台使用表格的时候,完全就是不能用的,需要进行改造。

一开始我也到处问前台为啥用不了,以为是我的问题,知道看到fastadmin的创始人的这个话,我才死心了,还是手动弹窗吧。

{
                            field: 'operate',
                            title: __('Operate'),
                            table: table,
                            buttons: [{
                                    name: 'detail',
                                    text: '详情',
                                    title: '详情',
                                    icon: 'fa fa-list',
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    url: 'order/detail'
                                }, {
                                    name: '去支付',
                                    title: '去支付',
                                    classname: 'btn btn-xs btn-info btn-ajax',
                                    icon: 'fa fa-leaf',
                                    url: 'order/pay',
                                    //visible属性可以让按钮显示或者隐藏,这里通过判断paystatus = 1就显示,否则就隐藏
                                    visible: function (row) {
                                        if (row.paystatus == 1) {
                                            return true
                                        } else {
                                            return false
                                        }
                                    },
                                    text: '去支付',
                                }

                            ],
                            events: Table.api.events.operate,
                            formatter: Table.api.formatter.operate
                        }

二、前台使用步骤

1.btn-ajax

代码如下(示例):

这里就手搓一下Ajax的,给初学者学习一下

 这里我们设置一下btn-ajax这个按钮

{
                            field: 'operate',
                            title: __('Operate'),
                            table: table,
                            buttons: [{
                                    name: 'detail',
                                    text: '详情',
                                    title: '详情',
                                    icon: 'fa fa-list',
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    url: 'order/detail'
                                }, {
                                    name: '去支付',
                                    title: '去支付',
                                    classname: 'btn btn-xs btn-info btn-ajax',
                                    icon: 'fa fa-leaf',
                                    //visible属性可以让按钮显示或者隐藏,这里通过判断paystatus = 1就显示,否则就隐藏
                                    visible: function (row) {
                                        if (row.paystatus == 1) {
                                            return true
                                        } else {
                                            return false
                                        }
                                    },
                                    text: '去支付',
                                }

                            ],
                            events: Table.api.events.operate,
                            formatter: Table.api.formatter.operate
                        }

我们看到明显的btn-ajax这个按钮叫去支付,

//去支付按钮采用ajax提交
            $('#myTabContent').on('click', '.btn-ajax', function () {
                $.ajax({
                    url: 'order/pay',
                    success: function (data, ret) {
                        //这里可以重定向到支付页面,乱跳就是成功了
                        Layer.msg("成功,跳转到支付页面...");
                        setTimeout(function () {
                            window.open(data.url,'_blank');
                        }, 3000);
                    },
                    error: function (data, ret) {
                        Layer.msg(ret.msg);
                    }
                })
            });

这里我们需要获取id,用fastadmin来做肯定是获取不到了

上面是后台还可以用一下,在前台没有使用Fast.api这些封装的,所以都不行,我们就得回到原始的bootstrap-table这个获取一行数据的这个方法,这个我也是在csdn找其他老哥写的,这里贴一下地址:bootstrap table 获取表格数据方式_js获取bootstrap table 取值-CSDN博客

所以我们这个Js的完整代码是:

//去支付按钮采用ajax提交
            $('#myTabContent').on('click', '.btn-ajax', function () {
                var id = $("#table").bootstrapTable('getSelections');//这里就能获取到id
                $.ajax({
                    url: 'order/pay',
                    data: {
                        id: id
                    },
                    success: function (data, ret) {
                        //提示三秒后在新页面打开
                        Layer.msg("成功,跳转到支付页面...");
                        setTimeout(function () {
                            window.open(data.url,'_blank');
                        }, 3000);
                    },
                    error: function (data, ret) {
                        Layer.msg(ret.msg);
                    }
                })
            });

2.btn-dialog

这个是fastadmin的弹窗按钮,在后台是直接能用的,在前台引入库也是能用,但是咱就是不引入,还是自己学一下咋做呢。

这个是偶然间得到的,接下来看看在哪得到的灵感。

灵感来源:

然后我们看这个方法就可以了啊!!!!这就是我们所需要的弹窗。下面就是我们需要的代码啦:

$(document).on("click", ".btn-change", function () {
                var that = this;
                var id = $(this).data("type") + "tpl";
                var content = Template(id, {});
                Layer.open({
                    type: 1,
                    title: "修改",
                    area: [$(window).width() < 450 ? ($(window).width() - 10) + "px" : "450px", "355px"],
                    content: content,
                    success: function (layero) {
                        var form = $("form", layero);
                        Form.api.bindevent(form, function (data) {
                            location.reload();
                            Layer.closeAll();
                        });
                    }
                });
            });

接下去应该都会操作了吧。实在不会的同学找我手把手教学一下。


总结

这就是前台使用三大按钮的具体实现,我们可以通过不断练习,慢慢尝试得到想要的结果,还有获取选中行一开始我也在fast官方找了好久想用他们提供的方法,后面发现走不通(可能我功力不够)。总的来说功能也差不多都能实现了。

这里是编程界的彭于晏,一个不务正业的程序员,广交天下朋友,有什么开发问题一起交流。

猜你喜欢

转载自blog.csdn.net/m0_55735473/article/details/143302591