ElementUI - 主页面--动态树&右侧内容管理

简介: ElementUI - 主页面--动态树&右侧内容管理

一.左侧动态树


1.定义组件

①样式&数据处理
<template>
  <el-menu  class="el-menu-vertical-demo" background-color="#334157"
   text-color="#fff" active-text-color="#ffd04b" :collapse="collapsed" router :default-active="$router.path" >
    <!-- <el-menu default-active="2" :collapse="collapsed" collapse-transition router :default-active="$route.path" unique-opened class="el-menu-vertical-demo" background-color="#334157" text-color="#fff" active-text-color="#ffd04b"> -->
    <div class="logobox">
      <img class="logoimg" src="../assets/img/logo.png" alt="">
    </div>
    <el-submenu v-for="m in menus"  :index="'id_'+m.id"  :key="'key_'+m.id">
      <template slot="title">
        <i class="m.icon"></i>
        <span>{{m.text}}</span>
      </template>
      <el-menu-item  v-for="m2 in m.modules" :index="m2.url" :key="'key_'+m2.id">
        <i class="m2.icon"></i>
        <span>{{m2.text}}</span>
      </el-menu-item>
    </el-submenu>
  </el-menu>
</template>
<style>
  .el-menu-vertical-demo:not(.el-menu--collapse) {
    width: 240px;
    min-height: 400px;
  }
  .el-menu-vertical-demo:not(.el-menu--collapse) {
    border: none;
    text-align: left;
  }
  .el-menu-item-group__title {
    padding: 0px;
  }
  .el-menu-bg {
    background-color: #1f2d3d !important;
  }
  .el-menu {
    border: none;
  }
  .logobox {
    height: 40px;
    line-height: 40px;
    color: #9d9d9d;
    font-size: 20px;
    text-align: center;
    padding: 20px 0px;
  }
  .logoimg {
    height: 40px;
  }
</style>


②数据交互
<script>
  export default {
    data(){
      return {
        collapsed:false,
    menus: []
      }
    },
    created() {
      this.$root.Bus.$on("xxx", (v) => {
        this.collapsed = v;
      });
      let url = this.axios.urls.SYSTEM_MENU_TREE;
      this.axios.get(url,{}).then(r=> {
        console.log(r);
        this.menus = r.data.rows;
      }).catch(e => {
      })
    }
  }
</script>


2.定义组件的和路由的关系

3eb4240ea5ca49fb908c3ab51c0b9141.png


3.效果演示

cfa89d44a5f14c37a8330b65372acae2.gif


二.动态路由展示对应界面


注意事项:

①要实现路由跳转,先要在el-menu标签上添加router属性,然后只要在每个el-menu-item标签内的index属性设置一下url即可实现点击el-menu-item实现路由跳转。

②导航当前项,在el-menu标签中绑定 :default-active="$route.path",注意是绑定属性,不要忘了加“:”,当$route.path等于el-menu-item标签中的index属性值时则该item为当前项。

③el-submenu标签中的url属性不能为空,且不能相同,否则会导致多个节点收缩/折叠效果相同的问题


示例:

<el-menu router :default-active="$route.path">
  <el-menu-item index="/company/userManager">用户管理</el-menu-item>
</el-menu>


然后将我们的组件渲染到Appmian.vue上即可

9640cc470698428ab579c01017e327e8.png


效果展示 :

148cecc705b14989a076d151ef2a0e3a.gif


三、右侧内容数据表格


1.根据文档搭建页面

首先我们分析一下,我们右侧有那些内容?然后去到我们ELementUI官网查找相对应的案例代码,我们首先需要一个form表单提供我们输入书籍名称进行模糊查询,还需要数据表格展示数据,其次就是底部的分页条来完成分页效果,知道了需求我们直接去找案例代码即可。


BookList.vue

<template>
    <div class="books">
      <el-form :inline="true" class="demo-form-inline" style="margin-top: 40px; margin-left: 20px;">
        <el-form-item label="书本名称">
          <el-input v-model="bookname" placeholder="请输入书本名称..."></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSubmit">查询</el-button>
        </el-form-item>
      </el-form>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="id" label="书本编号" width="180"></el-table-column>
        <el-table-column prop="bookname" label="书本名称" width="180"></el-table-column>
        <el-table-column prop="price" label="书本价格"></el-table-column>
        <el-table-column prop="booktype" label="书本类型"></el-table-column>
      </el-table>
      <div class="block">
        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"
          :page-sizes="[10, 20, 30, 40]" :page-size="rows" layout="total, sizes, prev, pager, next, jumper" :total="total">
        </el-pagination>
      </div>
    </div>
  </template>
  <script>
    export default {
      data() {
        return {
          bookname: '',
          tableData: [],
          rows:10,
          page:1,
          total:0
        }
      },
      methods: {
        select(params) {
          let url = this.axios.urls.BOOK_LIST;
          this.axios.get(url, {
            params: params
          }).then(r => {
            console.log(r);
            this.tableData = r.data.rows;
            this.total=r.data.total;
          }).catch(e => {
          })
        },
        onSubmit() {
          let params = {
            bookname: this.bookname
          }
          this.select(params)
        },
        handleSizeChange(num) { //当前所展示的数据条数值发生变化时所触发的事件
          console.log("展示的条数是" + num)
          let params = {
            bookname: this.bookname,
            rows:num,
            page:this.page
          }
          this.select(params)
        },
        handleCurrentChange(p) { //当前所展示的页码发生变化
          console.log("当前是第" + p + "页")
          let params = {
            bookname: this.bookname,
            rows:this.rows,
            page:p
          }
          this.select(params)
        }
      },
      created() {
        this.select({})
      }
    }
  </script>
  <style>
  </style>


其中  BOOK_LIST 是在action.js中间定义好的,数据表格以及分页条均可在element官网中找到,并且当组件创建时,重写了钩子函数,自动加载数据


后端大家就自己写啦,下面展示一下示例

c9fc4d8bf48b49d288ff132a5e533aea.gif

目录
相关文章
|
6月前
|
JavaScript
Vue 项目中实现在所有页面固定一个全局对话栏组件
Vue 项目中实现在所有页面固定一个全局对话栏组件
67 0
|
数据库
Layui入门&动态树&动态选项卡&用户增加&修改&删除&(一)
Layui入门&动态树&动态选项卡&用户增加&修改&删除&
|
JavaScript
fastadmin表格列表内部自定义按钮
fastadmin表格列表内部自定义按钮
394 0
fastadmin表格列表内部自定义按钮
|
3月前
|
JavaScript
如何对ElementUI、ElementPlus中的Tree树组件进行美化,如增加辅助线、替换展开收起图标、点击节点后文字高亮等效果?本文给你答案!
本文介绍了如何对ElementUI和ElementPlus的Tree树组件进行美化,包括增加辅助线、替换展开收起图标、点击节点后文字高亮等效果,并提供了详细的代码示例和实现效果。
456 0
如何对ElementUI、ElementPlus中的Tree树组件进行美化,如增加辅助线、替换展开收起图标、点击节点后文字高亮等效果?本文给你答案!
若依颜色失效怎么办?F12刷新样式不管用,回到控制台,重新点击项目链接就好了
若依颜色失效怎么办?F12刷新样式不管用,回到控制台,重新点击项目链接就好了
若依如何创建二级页面菜单,点击目录后,右侧空白的悬浮空白的内容,点击系统管理的菜单管理,上级菜单点击主类木有个小三角,选择我们之前创建的主类目
若依如何创建二级页面菜单,点击目录后,右侧空白的悬浮空白的内容,点击系统管理的菜单管理,上级菜单点击主类木有个小三角,选择我们之前创建的主类目
Vue--ElementUI实现主页面横向导航
Vue--ElementUI实现主页面横向导航
|
6月前
|
存储 JavaScript 前端开发
JS中让二级菜单栏一直保持展开状态,页面跳转也不会改变
JS中让二级菜单栏一直保持展开状态,页面跳转也不会改变
|
JSON 前端开发 数据格式
获取ztree树的选中子菜单信息并且提交给后端
获取ztree树的选中子菜单信息并且提交给后端
57 0
获取ztree树的选中子菜单信息并且提交给后端
|
JSON 前端开发 JavaScript
BootStrap框架下使用JS动态加载table并点击相关列弹出二级页面
在这里记录一下,也是在公司用到的一个例子,刚刚解决,正好趁热打铁。前端页面是采用BootStrap框架搭建的,主要的样式涉及到项目,在这里就不截图了,直接上代码:
110 1