Vue-Element-UI简单项目完善动态树+数据表格+分页

一、动态菜单实现

         我相信经过上次做的东西,我想大家都很熟练了。还是老样子,先启动项目,前端的项目进入到你自己的路径再cmd npm run dev 先跑起来,后端的项目也跑起来。注意:端口号要不一样哦。

1.首先测试后端数据是否能拿到

  • 启动我们后端项目
  • 然后找到对应的接口复制到浏览器上面
  • OK,我们已经拿到了后台接口的数据
    在这里插入图片描述 为啥我的json这么好看,下载一个插件叫json formatter,具体咋下,魔法。

2.修改前端的代码

  • 首先把我们之前测试前端动态数据的mockjs注释掉,不然访问不了后台
    在这里插入图片描述
    我们先点击登录看一下返回的是什么数据,然后根据数据名修改我们的Login.vue
    在这里插入图片描述
    -修改Login.vue
    在这里插入图片描述
             现在去登录试试,已经成功跳转
    在这里插入图片描述
             现在我们需要将左侧的导航改为动态的导航,修改LeftNav.vue代码
    复制一份代码过来,并注释掉之前的
<el-submenu index="" key="">
        <template slot="title">
            <i class=""></i>
            <span></span>
        </template>
		<el-menu-item index="" key="">
            <i class=""></i>
            <span></span>
        </el-menu-item>
	</el-submenu>

在这里插入图片描述

         配置一下后台的接口到action.js
在这里插入图片描述
         回到LeftNav.vue这个文件
在这里插入图片描述
         修改Left.vue的代码
在这里插入图片描述
         最终效果,这样,我们导航栏的动态加载基本完成。
在这里插入图片描述

3.vue+element的el-menu组件实现路由跳转及当前项的设置

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

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

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

router :default-active="$route.path"

在这里插入图片描述
         新建一个book文件夹,在book文件夹中创建两个组件,一个BookList.vue,另一个为AddBook.vue
在这里插入图片描述
         配置路由
在这里插入图片描述
         ps:别忘了让他们显示出来啊
在这里插入图片描述
         最终效果,点击哪个切换哪个
在这里插入图片描述

二、书籍表格展示

         修改BookList.vue方法

<template>
  <div style="padding: 20px;">
    <!-- 搜索栏 -->
    <el-form :inline="true" class="demo-form-inline">
      <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" stripe 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>
    <!-- 分页条 -->
    <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>
</template>

<script>
  export default {
    data() {
      return {
        bookname: '',
        tableData: [],
        page: 1,
        rows: 10,
        total: 0
      }
    },
    methods: {
      query(params){
        //通用查询方法
        let url = this.axios.urls.BOOK_LIST;
        this.axios.get(url, {
          params: params
        }).then(resp => {
          console.log(resp);
          this.tableData = resp.data.rows;
          this.total = resp.data.total;
        }).catch(err => {

        })
      },
      onSubmit() {
        //搜索方法
        let params = {
          bookname: this.bookname
        }
        this.query(params);

      },
      handleSizeChange(r) {
        console.log("当前展示的记录数为" + r + "条")
        let params = {
          bookname: this.bookname,
          rows:r,
          page:this.page
        }
        this.query(params)

      },
      handleCurrentChange(p) {
        console.log("当前展示的页码是第" + p + "页")
        let params = {
          bookname: this.bookname,
          page:p,
          rows:this.rows
        }
        this.query(params)
      }

    }
  }
</script>

<style>
</style>

在这里插入图片描述

这样今天的基本功能完成了。

接口文档

点击跳转到接口文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值