fastadmin按钮级别权限控制实现

news2024/12/27 3:23:51

1.菜单规则得存在。

2.html代码增加对应控制

3.js代码增加对应路由标志

<div class="panel panel-default panel-intro">
    
    <div class="panel-heading">
        {:build_heading(null,FALSE)}
        <ul class="nav nav-tabs" data-field="status">
            <li class="active"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
            {foreach name="statusList" item="vo"}
            <li><a href="#t-{$key}" data-value="{$key}" data-toggle="tab">{$vo}</a></li>
            {/foreach}
        </ul>
    </div>


    <div class="panel-body">
        <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade active in" id="one">
                <div class="widget-body no-padding">
                    <div id="toolbar" class="toolbar">
                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
                        <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('csmsignin/conf/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('csmsignin/conf/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('csmsignin/conf/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('csmsignin/conf/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>

                        <div class="dropdown btn-group {:$auth->check('csmsignin/conf/multi')?'':'hide'}">
                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                            <ul class="dropdown-menu text-left" role="menu">
                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                            </ul>
                        </div>
                    </div>
                    <table id="table" class="table table-striped table-bordered table-hover"
                           data-operate-edit="{:$auth->check('csmsignin/conf/edit')}" 
                           data-operate-del="{:$auth->check('csmsignin/conf/del')}"
                           data-operate-notice="{:$auth->check('csmsignin/conf/notice')}"
                           data-operate-shop="{:$auth->check('csmsignin_confuser_shop')}"
                           data-operate-sigecode="{:$auth->check('csmsignin/conf/getsigeqcode')}"
                           data-operate-sigecode_xcx="{:$auth->check('csmsignin/conf/gettsqdcodeimgs')}"
                           data-operate-confinfos="{:$auth->check('csmsignin/confinfo')}"
                           data-operate-confusers="{:$auth->check('csmsignin/confuser/index')}"
                           data-operate-confqdcode="{:$auth->check('csmsignin/conf/getQDcodeImg')}"
                           width="100%">

                        要想达到按钮级别的控制;则这里需对应增加控制;示例如:
                        0.必须存在菜单规则: csmsignin/confuser/index

                        1.html代码中:confusers得对应js中name='confusers'   data-operate-confusers="{:$auth->check('csmsignin/confuser/index')}"

                        2.js代码中:
                        {
                        name: 'confusers',
                        text: __('参会人'),
                        classname: 'btn btn-xs btn-info btn-click',
                        icon: 'fa fa-file',
                        url: 'csmsignin/confuser/index?', //必须加上
                        click: function (res, row) {
                        window.open("../csmsignin/confuser?parentid=" + row.id);
                        },
                        },

                    </table>
                </div>
            </div>

        </div>
    </div>
</div>
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'csmsignin/conf/index' + location.search,
                    add_url: 'csmsignin/conf/add',
                    edit_url: 'csmsignin/conf/edit',
                    del_url: 'csmsignin/conf/del',
                    multi_url: 'csmsignin/conf/multi',
                    table: 'csmsignin_conf',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    [
                        { checkbox: true },
                        { field: 'id', title: __('Id'), width:'50' },
                        { field: 'name', title: __('Name'), width:'200' },
                        { field: 'images', title: __('Images'), width:'100', events: Table.api.events.image, formatter: Table.api.formatter.images },
                        //{ field: 'requiredsiginin', title: __('Requiredsiginin'), searchList: { "Y": __('Requiredsiginin y'), "N": __('Requiredsiginin n') }, formatter: Table.api.formatter.normal },
                        //{ field: 'canoutusersignin', title: __('Canoutusersignin'), searchList: {"Y":__('Canoutusersignin y'),"N":__('Canoutusersignin n')}, formatter: Table.api.formatter.normal},
                        // { field: 'siginedcontent', title: __('Siginedcontent') },
                        // { field: 'meetdate', title: __('Meetdate') },
                        { field: 'meetaddress', title: __('Meetaddress'), width:'200' },
                        { field: 'begintime', title: __('Begintime'), width:'150', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime,sortable: true },
                        { field: 'endtime', title: __('Endtime'), width:'100', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime },
                        { field: 'status', title: __('Status'), width:'100', searchList: { "normal": __('未开始'), "started": __('进行中'), "hidden": __('已结束') }, formatter: Table.api.formatter.status },
                        {field: 'floating_button', title: __('悬浮报名参会按钮'), searchList:{1:__('是'),0:__('否')}, formatter: Table.api.formatter.toggle},
                        // {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                        // {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                        // {field: 'admin_id', title: __('Admin_id')},
                        // {field: 'b1', title: __('B1')},
                        // {field: 'b2', title: __('B2')},
                        // {field: 'b3', title: __('B3')},
                        // {field: 'b4', title: __('B4')},
                        // {field: 'b5', title: __('B5')},
                        // {field: 'b6', title: __('B6')},
                        // {field: 'b7', title: __('B7')},
                        // {field: 'b8', title: __('B8')},
                        // {field: 'b9', title: __('B9')},
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: table, events: Table.api.events.operate,
                            formatter: Table.api.formatter.operate,
                            //formatter: Table.api.formatter.buttons,
                            buttons: [
                                {
                                    name: 'notice',
                                    title: __('会议通知'),
                                    text:'会议通知',
                                    extend:'data-area=["50%","60%"]',
                                    classname: 'btn btn-xs btn-default btn-dialog',
                                    icon: 'fa fa-commenting',
                                    url: 'csmsignin/conf/notice?'
                                },
                                {
                                    name: 'shop',
                                    title: __('厂商打卡'),
                                    text:'厂商打卡',
                                    extend:'data-area=["80%","80%"]',
                                    classname: 'btn btn-xs btn-danger btn-dialog',
                                    icon: 'fa fa-commenting',
                                    url: 'csmsignin_confuser_shop?'
                                },
                                {
                                    name: 'sigecode',
                                    text: __('公众号签到码'),
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-qrcode',
                                    url: 'csmsignin/conf/getsigeqcode?',
                                    click: function (res, row) {
                                        window.open("../csmsignin/conf/getsigeqcode?confid=" + row.id);
                                    },
                                },
                                {
                                    name: 'sigecode_xcx',
                                    text: __('小程序签到码'),
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-qrcode',
                                    url: 'csmsignin/conf/gettsqdcodeimgs?',
                                    click: function (res, row) {
                                        window.open("../csmsignin/conf/gettsqdcodeimgs?confid=" + row.id);
                                    }
                                },
                                {
                                    name: 'confinfos',
                                    text: __('栏目维护'),
                                    classname: 'btn btn-xs btn-success btn-click',
                                    icon: 'fa fa-file',
                                    url: 'csmsignin/confinfo?',
                                    click: function (res, row) {
                                        window.open("../csmsignin/confinfo?parentid=" + row.id);
                                    },
                                },
                                {
                                    name: 'confusers',
                                    text: __('参会人'),
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-file',
                                    url: 'csmsignin/confuser/index?',
                                    click: function (res, row) {
                                        window.open("../csmsignin/confuser?parentid=" + row.id);
                                    },
                                },
                                {
                                    name: 'confqdcode',
                                    text: __('推广二维码'),
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-qrcode',
                                    url: '../csmsignin/conf/getQDcodeImg',
                                    click: function (res, row) {
                                        window.open("../csmsignin/conf/getQDcodeImg?confid=" + row.id);
                                    },
                                }                               
                            ]
                        }
                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },
        notice: function () {
            $("#city-picker").on("cp:updated", function() {
                var citypicker = $(this).data("citypicker");
                var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province");
                $("#code").val(code);
            });
            Form.api.bindevent($("form[role=form]"));
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };
    return Controller;
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

numpy入门笔记

学习参考&#xff1a; 菜鸟教程 numpy入门博客 numpy入门视频 NumPy安装 默认情况使用国外线路&#xff0c;国外太慢&#xff0c;我们使用清华的镜像 pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple一、创建数组 numpy.array(object, dt…

【K8s】专题四(7):Kubernetes 控制器之 CronJob

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、工作原理 三、相关特性 四、资源清单&#xff08;示例&#xff09; 五…

一图文看懂oracle数据库的安装与卸载

oracle数据库安装与卸载 1、卸载 对于已经安装过oracle数据库的主机&#xff0c;一般卸载起来比较麻烦&#xff0c;需要卸载大致四个地方&#xff0c;分别是关闭应用的服务、删除相关注册表、删除路径以及删除安装的位置&#xff0c;最后就需要重启主机。 前提&#xff0c;在…

从零开始:如何在直播应用中集成美颜SDK和美颜插件

本篇文章&#xff0c;小编将详细介绍如何从零开始&#xff0c;在直播应用中集成美颜SDK和美颜插件。 一、准备工作 确定需求 在开始集成美颜SDK之前&#xff0c;首先需要明确需求。考虑以下几个问题&#xff1a; 直播应用的目标用户是谁&#xff1f; 需要集成哪些美颜功能&…

图的相关种类

目录 数据类型 存储结构 邻接矩阵表示法 无向图 邻接矩阵表示 有向图 网 实现 邻接矩阵表示 存储结构 创建无向图 优点 缺点 邻接表法表示 表示无向图 表示有向图 存储结构 无向网 特点 十字链表与多重表 十字链表 存储结构 多重表 存储结构 数据类型 存…

IDEA使用阿里通义灵码插件

在这个AI火热的时代&#xff0c;纯手工写代码已经有点out了&#xff0c;使用AI插件可以帮我们快速写代码&#xff0c;起码能省去写那些简单、重复性的代码&#xff0c;大大提高编码效率&#xff0c;在这里我推荐使用阿里的通义灵码 注册安装 安装注册好后&#xff0c;打开我们…

室内外融合定位是如何做到成为定位领域的新宠

在信息化高速发展的今天&#xff0c;定位技术已成为人们生活和工作中不可或缺的一部分。随着物联网、智慧城市等领域的蓬勃发展&#xff0c;传统的单一定位方式已无法满足复杂多变的环境需求。在这样的背景下&#xff0c;室内外融合定位技术应运而生&#xff0c;以其独特的优势…

海南聚广众达电子商务咨询有限公司正规吗?

在数字经济的浪潮下&#xff0c;海南聚广众达电子商务咨询有限公司凭借其对抖音电商领域的深刻洞察和专业服务&#xff0c;成为引领行业新风尚的佼佼者。公司不仅具备丰富的电商运营经验&#xff0c;更有一支高效、创新的团队&#xff0c;致力于为品牌商家提供全方位的电商解决…

《数学学习与研究》投稿难度大吗?

《数学学习与研究》杂志的投稿难度相对适中。 一方面&#xff0c;它作为一本有一定影响力的数学专业期刊&#xff0c;对稿件的质量有一定要求。论文需要具备一定的创新性、科学性和逻辑性&#xff0c;研究内容要具有一定的价值和深度。 另一方面&#xff0c;与一些核心期刊相…

小红书笔记怎么发浏览量高?建议收藏

如何让自己的小红书笔记脱颖而出&#xff0c;赢得高浏览量&#xff1f;本文伯乐网络传媒将从内容编辑、提高曝光度方面&#xff0c;为你揭秘小红书笔记创作的技巧。 一、文字内容编辑技巧 1.优化笔记标题和封面 &#xff08;1&#xff09;标题关键词设置 一个好的标题决定了…

国密SSL证书与传统SSL证书的区别

随着网络技术的飞速发展&#xff0c;网络安全问题日益凸显。在保护数据传输安全、防止数据泄露和篡改方面&#xff0c;SSL证书扮演着至关重要的角色。国密SSL证书作为一种遵循国家标准技术规范并参考国际标准的SSL证书产品&#xff0c;近年来受到越来越多的关注。本文将详细介绍…

13. ESP32-HTTPClient(Arduino)

使用ESP32 Arduino框架的HTTPClient库进行HTTP请求 在ESP32开发里&#xff0c;网络通信是挺重要的一部分&#xff0c;你可能需要从服务器拿数据啊&#xff0c;或者把传感器数据发到云端什么的。不过别担心&#xff0c;ESP32 Arduino框架给我们提供了HTTPClient库&#xff0c;让…

电子纸在日化行业的全新应用

电子纸在日化行业的全新应用 项目背景 在一日化龙头企业他们的洗衣粉产线在AGV小车取料到运输到产品包装工序时&#xff0c;因为取料粉车无明显区分标识&#xff0c;但是产品系列有十大类。在未采用晨控电子纸之前现场采用一个转盘分为十个区域&#xff0c;取料工序上方会有一…

2024-06-06 问AI: 在深度学习中,什么是欧几里德长度?

文心一言 在深度学习中&#xff0c;欧几里德长度&#xff08;也称为欧几里得距离或欧氏距离&#xff09;是一个常用的概念&#xff0c;它衡量的是在多维空间中两个点之间的真实距离&#xff0c;或者说是向量的自然长度&#xff08;即该点到原点的距离&#xff09;。以下是关于…

企业该如何选择GPU云服务器配置?

无论是个人开发者还是企业用户&#xff0c;对于如何选购最佳的云服务器配置&#xff0c;都是比较头疼与纠结的。因为GPU云服务器的配置众多&#xff0c;各种组合有各自优势与用途&#xff0c;很难一下子做出决策。接下来&#xff0c;我们来简单分析下各配置应该怎么选购。 1、地…

Linux C语言:指针和指针变量

一、指针的作用 使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存能直接访问硬件能够方便的处理字符串得到多于一个的函数返回值 二、内存、地址和变量 1、内存地址 2、变量和地址 1&#xff09;变量用来在程序中保存数据 比如: int k 58; //声明一个int变…

Dockershim 与 Containerd:两种容器运行时的故事

在不断发展的容器化世界中&#xff0c;两个关键组件经常被混淆&#xff1a;Dockershim 和 containerd。虽然它们在管理容器方面都发挥着重要作用&#xff0c;但它们的用途却截然不同。本文深入探讨了它们的功能&#xff0c;深入探讨了 Dockershim 和 containerd 之间的区别。 揭…

【前端】响应式布局笔记——自适应布局

自适应布局 自适应布局是不同设备对应不同的html(局部自适应)&#xff0c;通过判断设备的类型或控制局部的变化。 1、获取设备是移动端还是pc端 // 获取设备的信息let userAgent navigator.userAgent.toLowerCase();// 使用正则表达式来判断类型let device /ipad|iphone|m…

读书笔记分享

1.绝大多数父母都是爱孩子的&#xff0c;可他们却不是称职的父母。世界上任何职业都要培训、考核、竞争上岗&#xff0c;唯有“父母”这个职业是没有这些程序&#xff0c;只要生了小孩&#xff0c;就是天经地义的父母。 2.由于自身工作特点&#xff0c;“白领”们的部分器官和…

【Java数据结构】详解Stack与Queue(四)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.用队列实现栈 3.用栈实现队列 4.栈和队列存放null 5.总结 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友…