Fastadmin-表格按钮

 1、除开超级管理员账号,其他账号登录时,点击切换按钮时,提示无权限

当表格列表中,有其他切换状态的按钮时,需要在控制器中新增一个定义,否则除开超级管理员,其他账号会出现无权限的提示(status为默认的,所以不需要单独在控制器中设置)。

具体案例如下:

JS中:

{
    field: 'is_top',
    title: __('Is_top'),
    searchList: {"0": __('Is_top 0'), "1": __('Is_top 1')},
    yes: '1',
    no: '0',
    formatter: Table.api.formatter.toggle
},

控制器中定义属性值:

    protected $multiFields = ['is_top', 'is_red', 'is_hot', 'status'];//需要设置,否则列表中操作时,其他账号会提示无权限

2、A表的列表页中,点击按钮,弹出弹框,弹框内容为B表的列表页(列表,增删改查等按钮)

2.1、总体页面展示:

2.1.1、A表的列表页:

2.1.2、A列表页点击 回答 按钮的弹框页:

2.2、A页面代码:

2.2.1、控制器代码:
//获取按钮权限
//为了JS能获取到,同时判读权限 判断是否有对应权限
$this->assignconfig('answerAuth', $this->auth->check('law/question/answer/index'));

2.2.2、JS代码:

(注:url中传递的question_id,为B表中与A表中的关联字段)

{
                            field: 'buttons', title: __('其他操作'), table: table, operate: false,
                            buttons: [
                                {
                                    name: 'answer',
                                    text: '回答',
                                    title: '回答',
                                    icon: 'fa fa-list',
                                    //btn-xs:特别小按钮  btn-sm:小按钮  btn-lg:大按钮
                                    //btn-info:一般信息(蓝色)  btn-danger:危险信息(红色) btn-default:默认样式(白色) btn-primary:首选项(深蓝) btn-success:成功(绿色) btn-warning:警告(黄色)
                                    //btn-dialog:弹窗  btn-ajax:ajax请求  btn-addtabs:新选项卡
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    url: 'law/question/answer/index?question_id={$row.id}',//question_id为B表中与A表中的关联字段
                                    visible: function (row) {
                                        //重点在这
                                        //返回true时按钮显示,返回false隐藏
                                        return true;
                                    }
                                },
                            ],
                            events: Table.api.events.operate,
                            formatter: function (value, row, index) { //隐藏自定义的按钮
                                var that = $.extend({}, this);
                                var table = $(that.table).clone(true);
                                //权限判断
                                if(Config.answerAuth != true){  //判断该按钮是否有权限
                                    $(table).data("buttons-answer", null);
                                    that.table = table;
                                }else{
                                }
                                return Table.api.formatter.buttons.call(that, value, row, index);
                            },
                        },

2.3、B页面代码:

2.3.1、控制器:

接收参数

        //接收页面参数,传递参数
        $question_id = $this->request->request('question_id', 0);
        $this->question_id = $question_id;
        $this->assignconfig('question_id', $question_id);

2.3.2、视图文件中的index.html:

主要用于删除A页面中的跳转按钮带的IDS参数

<script>
    //删除url的id参数
    function funcUrlDel(name) {
        var loca = window.location;
        var baseUrl = loca.origin + loca.pathname + "?";
        var query = loca.search.substr(1);

        if (query.indexOf(name) > -1) {
            var obj = {};
            var arr = query.split("&");
            for (var i = 0; i < arr.length; i++) {
                arr[i] = arr[i].split("=");
                obj[arr[i][0]] = arr[i][1];
            }
            delete obj[name];
            var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");
            history.pushState(null, null, url);
            return;
        } else {
            return window.location.href;
        }
    }
</script>

2.3.3、JS代码:

处理A页面传递过来的url中的IDS,转换成B页面对应的关联字段名称(此处为question_id)

visible: false,//浏览模式(卡片切换)、显示隐藏列、导出、通用搜索全部隐藏
                showToggle: false,//浏览模式可以切换卡片视图和表格视图两种模式
                showColumns: false,//列,可隐藏不显示的字段
                search: false,//快速搜索,搜索框
                showExport: false,//导出
                queryParams: function (params) {
                    var filter = JSON.parse(params.filter);
                    var op = JSON.parse(params.op);
                    var ids = Fast.api.query('ids');
                    if (ids) {
                        filter.question_id = ids;
                        op.question_id = '=';
                        params.filter = JSON.stringify(filter);
                        params.op = JSON.stringify(op);
                        funcUrlDel('ids');
                    }
                    return params;
                },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值