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

目录
相关文章
|
7月前
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
|
9月前
|
数据可视化 JavaScript
< elementUi 中 树状侧边栏,机构单位 - 岗位 字典 >
本文介绍了如何在Vue + ElementUI环境中,利用Tree组件和Dropdown下拉菜单实现组织单位、岗位的树状数据可视化展示及操作。案例展示了包含头部搜索、节点下拉菜单功能的树形控件,支持增删改查操作。同时,提供了效果截图。注意,案例中混合使用了Vue2和Vue3语法,可能存在潜在问题,仅作参考。
199 0
< elementUi 中 树状侧边栏,机构单位 - 岗位 字典 >
|
JavaScript API C++
Vue项目中的文件/文件夹命名规范
文件或文件夹的命名遵循以下原则: index.js 或者 index.vue,统一使用小写字母开头的(kebab-case)命名规范 属于组件或类的,统一使用大写字母开头的(PascalCase)命名规范 其他非组件或类的,统一使用小写字母开头的(kebab-case)命名规范 1.
16858 0
|
存储 前端开发 Java
Element-UI中el-upload上传组件(demo详解)
案例详解Element-UI中el-upload上传组件,一起打卡学习吧!
1680 0
Element-UI中el-upload上传组件(demo详解)
|
9月前
|
Oracle 安全 Java
JDK收费的各个版本(记录一下)
JDK收费的各个版本(记录一下)
8917 1
|
9月前
|
JavaScript
vue 钟表功能:动态显示实时时间(时间格式化插件dayjs)
vue 钟表功能:动态显示实时时间(时间格式化插件dayjs)
452 0
|
JavaScript
TypeError: Cannot read properties of null (reading &#39;level&#39;)
# 一、分析问题 1、一个下拉框组件的更新由另一个下拉框组件控制被动更新列表,子级下拉框的值是由父级下拉框的值调用接口获取,每次父级下拉框值的改变都会改变子级下拉框的数据源也就是会改变子级下拉框的options,切换后之前的父级节点找不到就会报了这个错,父级节点不改变(即不切换)的话不会报错 # 二、解决方案 ## 1、vue页面的html层 ```html &lt;div&gt; &lt;el-row :gutter=&quot;15&quot;&gt; &lt;el-col :span=&quot;4&quot;&gt; &lt;div&quot;&gt;父级下拉框:&lt;/div&gt; &lt;el-select clearable v-model=&quot;parentId&quot; @c
199 0
vue3+elementplus后台管理系统,实现侧边栏菜单显示到主内容区域
vue3+elementplus后台管理系统,实现侧边栏菜单显示到主内容区域
|
JavaScript
详解——Vue3列展示功能及原理
详解——Vue3列展示功能及原理
258 0

热门文章

最新文章

相关实验场景

更多