后台管理系统 菜单

### 表单校验

* rules属性绑定

* data中定义规则

* 表单item上prop属性绑定

注意点:  prop的值和规则的值以及表单的值需要保持一致

### 在vue中如何获取dom元素

    - 定义属性

   

111111

    - 获取:this.$refs.qqq

### 如何携带token

* 登录成功的时候将获取的token做本地缓存

* 需要做请求拦截====其他所有请求需要携带请求头  Authorization

    - api/index.js

        - 做请求拦截    获取本地缓存

        - 将本都缓存的值添加到请求头上面去

###  左侧菜单数据展示

    - 封装函数  ===获取左侧菜单数据请求的函数    api/index.js

    - home.vue

        + 导入封装请求函数

        + 调用这个函数获取数据,并且将数据 赋值给data中的menuList

        + 将数据循环出来 ====进行2层循环

    步骤分析:

    - 静态组件布局编写===从官网复制过来

    - 动态渲染左侧菜单导航===将获取的请求数据使用循环

    - 配置属性默认值展开一个  ====查看官网配置属性

    - 配置路由实现显示对应的组件

###  做菜菜单导航图标的显示

+ 引入iconfont.css文件      main.js中引入

+ 一级图标

    - 准备一个对象或者数组

          iconObj: {

            0: 'icon-user',

            1: 'icon-tijikongjian',

            2: 'icon-shangpin',

            3: 'icon-danju',

            4: 'icon-baobiao'

        },

    - 图标标签属性绑定  class  然后根据索引找到对象中的哪一个类名进行显示

+ 二级图标====直接在二级循环标题前面提加图标标签====写死

#### 左侧菜单步骤分析:

    - 1-显示组件菜单=====从官网复制

    - 2-只展开一个  通过控制  index

    - 3-配置路由 ===点击谁右边就显示哪一个组件 

        + 配置项上面添加一个router属性  :router="true"

        + 配置唯一值index的值为path值=====:index="item2.path

    - 4-改变默认高亮颜色  active-text-color="#00ff00"

    - 5-点击当前只展开其他收起  :unique-opened="true"

    - 6-刷新保持最后一次的高亮 

        + 设置默认展开项  :default-active="defaultActive"

        + 点击

            + 给当前每一项的二级菜单  绑定点击事件 并且获取当前的path值

            + 将这个值赋值给 defaultActive 并且做本地缓存【刷新的时候还可以获取上一次的path值】

            + 刷新后获取这个值  defaultActive=从本都缓存中拿 ||  'users'

    - 7-解决二级菜单的每一项的右边框    .el-menu {border:none;}

    - 8-点击收起菜单功能

        + 布局一个按钮  点击按钮

        + 点击设置 collapse=true  or  false 

        + 改变左侧侧边栏宽度样式的设置   

        + 关闭收起和展开的动画  :collapse-transition="false"


  ###  路由拦截

  路由拦截和请求拦截的区别

  请求拦截=====只要请求就拦截

  路由拦截====只要路由值发生改变就拦截

  ###  如何设置路由拦截

    + 在router文件中设置路由前置拦截  router.beforeEach((to,form,next)=>{})

    + 判断是不是lofgin路由值  是 就直接放行,

    + 判断是不是有token  有token就放行 没有就去login

    + 最后解决掉了问题会出现兼容性  解决方法如下


    const originalPush = VueRouter.prototype.push;

    VueRouter.prototype.push = function push(location) {

    return originalPush.call(this, location).catch(err => err);

    };

你可能感兴趣的:(后台管理系统 菜单)