zoukankan      html  css  js  c++  java
  • day 71 crm(8) 权限组件的设置,以及权限组件的应用

    ---恢复内容开始---

    前情提要:

      strak 组件是增删改查组件 ,

      生活中,需求权限组件, 

    不足: 1,前后端不分离,

        2, 空url也会刷新界面,造成资源浪费

        3,如果角色忘记设置权限了,即没有设置父级权限会报错   

    https://www.cnblogs.com/baili-luoyun/p/10739476.html 

    前五条链接

      一:分析表结构

      二:创建模型类

      三:基于strak 组件录入数据

      四:登陆查询登陆用户所有权限

      五:基于中间件白名单效验权限

    六: 利用自定制标签   ,增加 展示权限,权限分级设定

    1: 在权限组件中创键自定义标签:

    使用自定义标签的目的: 使 各个 数据分离   (??? 可能有问题)

     

     2:导入自定义标签包

    # 自定义标签复习

     3: 自定义标签语法糖

    这是固定用法,将函数返回的内容,出入到转接的html 中,在传到前端html 里

    4:获取该人的session权限

    结果:

     

    5:自定义标签固定写法

      

    七:权限树插件使用

    1: 权限树插件,配置

    <div id="treeview" class="small"></div>
    
    <script src="/static/bootstrap-treeview/js/bootstrap-treeview.js"></script>
    {#<script src="/static/js/jquery.js"></script>#}
    <script type="text/javascript">
      // API文档参数列表: https://www.cnblogs.com/tangzeqi/p/8021637.html
    
                  $(function() {
    
                        var defaultData ={{ permission_tree|safe }}
    
                        var alternateData = [
                          {
                            text: 'Parent 1',
                            tags: ['2'],
                            nodes: [
                              {
                                text: 'Child 1',
                                tags: ['3'],
                                nodes: [
                                  {
                                    text: 'Grandchild 1',
                                    tags: ['6']
                                  },
                                  {
                                    text: 'Grandchild 2',
                                    tags: ['3']
                                  }
                                ]
                              },
                              {
                                text: 'Child 2',
                                tags: ['3']
                              }
                            ]
                          },
                          {
                            text: 'Parent 2',
                            tags: ['7']
                          },
                          {
                            text: 'Parent 3',
                            icon: 'glyphicon glyphicon-earphone',
                            href: '#demo',
                            tags: ['11']
                          },
                          {
                            text: 'Parent 4',
                            icon: 'glyphicon glyphicon-cloud-download',
                            href: '/demo.html',
                            tags: ['19'],
                            selected: true
                          },
                          {
                            text: 'Parent 5',
                            icon: 'glyphicon glyphicon-certificate',
                            color: 'pink',
                            backColor: 'green',
                            href: 'http://www.tesco.com',
                            tags: ['available','0']
                          }
                        ];
    
                        var options = {
                            // data:defaultData , //data属性是必须的,是一个对象数组    Array of Objects.
                            color: "", //所有节点使用的默认前景色,这个颜色会被节点数据上的backColor属性覆盖.        String
                            backColor: "#000000", //所有节点使用的默认背景色,这个颜色会被节点数据上的backColor属性覆盖.     String
                            borderColor: "#000000", //边框颜色。如果不想要可见的边框,则可以设置showBorder为false。        String
                            nodeIcon: "glyphicon glyphicon-stop", //所有节点的默认图标
                            checkedIcon: "glyphicon glyphicon-check", //节点被选中时显示的图标         String
                            collapseIcon: "glyphicon glyphicon-minus", //节点被折叠时显示的图标        String
                            expandIcon: "glyphicon glyphicon-plus", //节点展开时显示的图标        String
                            emptyIcon: "glyphicon", //当节点没有子节点的时候显示的图标              String
                            enableLinks: false, //是否将节点文本呈现为超链接。前提是在每个节点基础上,必须在数据结构中提供href值。        Boolean
                            highlightSearchResults: true, //是否高亮显示被选中的节点        Boolean
                            levels: 2, //设置整棵树的层级数  Integer
                            multiSelect: false, //是否可以同时选择多个节点      Boolean
                            onhoverColor: "#F5F5F5", //光标停在节点上激活的默认背景色      String
                            selectedIcon: "glyphicon glyphicon-stop", //节点被选中时显示的图标     String
    
                            searchResultBackColor: "", //当节点被选中时的背景色
                            searchResultColor: "", //当节点被选中时的前景色
    
                            selectedBackColor: "", //当节点被选中时的背景色
                            selectedColor: "#FFFFFF", //当节点被选中时的前景色
    
                            showBorder: true, //是否在节点周围显示边框
                            showCheckbox: false, //是否在节点上显示复选框
                            showIcon: true, //是否显示节点图标
                            showTags: false, //是否显示每个节点右侧的标记。前提是这个标记必须在每个节点基础上提供数据结构中的值。
                            uncheckedIcon: "glyphicon glyphicon-unchecked", //未选中的复选框时显示的图标,可以与showCheckbox一起使用
                        };
    
                        $('#treeview').treeview({
    
                              color: "#4F4F4F",
                              expandIcon: 'glyphicon glyphicon-chevron-right',
                              collapseIcon: 'glyphicon glyphicon-chevron-down',
                              nodeIcon: 'glyphicon glyphicon-bookmark',
                              data: defaultData,
                              enableLinks: true,
                              levels: 1,
                              showIcon:false,
                              selectedBackColor: "",
                              selectedColor: "#333"
    
                        });
    
    
                        $('#treeview').on('nodeSelected',function(event, data) {
                              console.log(data);
                        })
    
    
              });
    </script>
    View Code

    3: html 接收自定制标签的内容进行渲染,在返回html

    4:加载顺序,

    八:基于权限树,从新调整权限使用

    1: 接收session ,重新设置key ,vlause

    1.>1 :  权限数据重新设定,增加type 类型,用此分辨标签类别.

    2: 过滤掉所有的button 标签, 因为,无法展示编辑和删除,add加了没有意义.

    重新整理字典为主键为pk ,valuse 为整理的字典内容的值:

    目的: 这样的目的是,方便等会自调用

     结果:

     3:自调用的应用, 这里运用的数据的转化,

    1: 实例,

    2: 同理操作列表的数据,可以对结果统一改变

    解释:

    如果没有父级pid ,则为1级菜单, 

    如果有pid 则,调用父级的pk 对应的valuse 的值,进行修改,这样循环的时候,被循环列表会

    做对应的变更

    如果父级中没有nodes 属性,则增加一个nodes 属性,用来存放下一级的数据,

    !!!! 因为并没有比查看书籍,查看出版社更低的,即他们没有儿子级的

    所有if not ......esle ,轮不到他们. 即他们不会有nodes 属性,也不会有箭头.

     3: 按照插件内容配置,nodes ,nodes为是否有下一级的数据,

    以及图标功能 

    ,

    插件内容,样式

     permission_dict:    
                     {
                        1: {
                            'text': '查看书籍',
                            'nodes': [],
                            'href': '/stark/app01/book/',
                            'pk': 1,
                            'pid': 10
                        },
                        9: {
                            'text': '信息管理',
                            'nodes': [
                                         {
                                            'text': '书籍管理',
                                            'nodes': [ 
                                                        {
                                                            'text': '查看书籍',
                                                            'nodes': [],
                                                            'href': '/stark/app01/book/',
                                                            'pk': 1,
                                                            'pid': 10
                                                         }
                                                     ],
                                            'href': '',
                                            'pk': 10,
                                            'pid': 9
                                        },
    
                                         {
                                            'text': '出版社管理',
                                            'nodes': [
                                                      {
                                                        'text': '查看出版社',
                                                        'nodes': [],
                                                        'href': '/stark/app01/publish/',
                                                        'pk': 5,
                                                        'pid': 11
                                                    }
                                            ],
                                            'href': '',
                                            'pk': 11,
                                            'pid': 9
                                        }
    
                            ],
                            'href': '',
                            'pk': 9,
                            'pid': None
                        },
    View Code

    4: 按照插件内容配置,设置当前的着重显示,以及父级展开

     4>1:样式数据

     

    九:展示效果的完善.

    1: 显示当前操作位置颜色着重,

       以及当前操作的位置切换界面父级展开功能, 

      

    2:如果有父级,那么使父级展开,让父级等于父级的父级

    permisson_tree 内容

     

    效果图:  

    父级展开,以及当前操作,着重效果.

     

     十: 前端效果展示 ,menu.html

    html 部分, 

    <div id="treeview" class="small"></div>
    
    <script src="/static/bootstrap-treeview/js/bootstrap-treeview.js"></script>
    {#<script src="/static/js/jquery.js"></script>#}
    <script type="text/javascript">
      // API文档参数列表: https://www.cnblogs.com/tangzeqi/p/8021637.html
    
                  $(function() {
    
                        var defaultData ={{ permission_tree|safe }}
    
                        var alternateData = [
                          {
                            text: 'Parent 1',
                            tags: ['2'],
                            nodes: [
                              {
                                text: 'Child 1',
                                tags: ['3'],
                                nodes: [
                                  {
                                    text: 'Grandchild 1',
                                    tags: ['6']
                                  },
                                  {
                                    text: 'Grandchild 2',
                                    tags: ['3']
                                  }
                                ]
                              },
                              {
                                text: 'Child 2',
                                tags: ['3']
                              }
                            ]
                          },
                          {
                            text: 'Parent 2',
                            tags: ['7']
                          },
                          {
                            text: 'Parent 3',
                            icon: 'glyphicon glyphicon-earphone',
                            href: '#demo',
                            tags: ['11']
                          },
                          {
                            text: 'Parent 4',
                            icon: 'glyphicon glyphicon-cloud-download',
                            href: '/demo.html',
                            tags: ['19'],
                            selected: true
                          },
                          {
                            text: 'Parent 5',
                            icon: 'glyphicon glyphicon-certificate',
                            color: 'pink',
                            backColor: 'green',
                            href: 'http://www.tesco.com',
                            tags: ['available','0']
                          }
                        ];
    
                        var options = {
                            // data:defaultData , //data属性是必须的,是一个对象数组    Array of Objects.
                            color: "", //所有节点使用的默认前景色,这个颜色会被节点数据上的backColor属性覆盖.        String
                            backColor: "#000000", //所有节点使用的默认背景色,这个颜色会被节点数据上的backColor属性覆盖.     String
                            borderColor: "#000000", //边框颜色。如果不想要可见的边框,则可以设置showBorder为false。        String
                            nodeIcon: "glyphicon glyphicon-stop", //所有节点的默认图标
                            checkedIcon: "glyphicon glyphicon-check", //节点被选中时显示的图标         String
                            collapseIcon: "glyphicon glyphicon-minus", //节点被折叠时显示的图标        String
                            expandIcon: "glyphicon glyphicon-plus", //节点展开时显示的图标        String
                            emptyIcon: "glyphicon", //当节点没有子节点的时候显示的图标              String
                            enableLinks: false, //是否将节点文本呈现为超链接。前提是在每个节点基础上,必须在数据结构中提供href值。        Boolean
                            highlightSearchResults: true, //是否高亮显示被选中的节点        Boolean
                            levels: 2, //设置整棵树的层级数  Integer
                            multiSelect: false, //是否可以同时选择多个节点      Boolean
                            onhoverColor: "#F5F5F5", //光标停在节点上激活的默认背景色      String
                            selectedIcon: "glyphicon glyphicon-stop", //节点被选中时显示的图标     String
    
                            searchResultBackColor: "", //当节点被选中时的背景色
                            searchResultColor: "", //当节点被选中时的前景色
    
                            selectedBackColor: "", //当节点被选中时的背景色
                            selectedColor: "#FFFFFF", //当节点被选中时的前景色
    
                            showBorder: true, //是否在节点周围显示边框
                            showCheckbox: false, //是否在节点上显示复选框
                            showIcon: true, //是否显示节点图标
                            showTags: false, //是否显示每个节点右侧的标记。前提是这个标记必须在每个节点基础上提供数据结构中的值。
                            uncheckedIcon: "glyphicon glyphicon-unchecked", //未选中的复选框时显示的图标,可以与showCheckbox一起使用
                        };
    
                        $('#treeview').treeview({
    
                              color: "#4F4F4F",
                              expandIcon: 'glyphicon glyphicon-chevron-right',
                              collapseIcon: 'glyphicon glyphicon-chevron-down',
                              nodeIcon: 'glyphicon glyphicon-bookmark',
                              data: defaultData,
                              enableLinks: true,
                              levels: 1,
                              showIcon:false,
                              selectedBackColor: "",
                              selectedColor: "#333"
    
                        });
    
    
                        $('#treeview').on('nodeSelected',function(event, data) {
                              console.log(data);
                        })
    
    
              });
    </script>
  • 相关阅读:
    开心菜鸟系列学习笔记------javascript(5)
    开心菜鸟系列学习笔记-------javascript(3)
    开心菜鸟学习系列-----javascript(2)
    开心菜鸟学习系列笔记-----Javascript(1)
    开心菜鸟系列----函数作用域(javascript入门篇)
    开心菜鸟系列----变量的解读(javascript入门篇)
    开心菜鸟笔记系列---正则表达式笔记(入门篇)
    开心菜鸟笔记系列---博客开篇贴!(求支持)
    在开启bin-log日志下Mysql报错
    开心菜鸟学习系列学习笔记------------nodejs util公共函数
  • 原文地址:https://www.cnblogs.com/baili-luoyun/p/10745169.html
Copyright © 2011-2022 走看看