ElementUI之动态树+数据表格+分页

目录

前言

一.ElementUI之动态树

1.前端模板演示

2.数据绑定

2.1 通过链接获取后台数据

2.2 对链接进行绑定

2.3添加动态路由

2.4 配置路由

3.效果演示

二.数据表格+动态分页

1.前端模板

 2.通过JS交互获取后端数据

3 效果演示


前言

 Element UI 是一个基于 Vue.js 的开源前端框架,用于构建用户界面。它提供了一套丰富的 UI 组件和工具,可以帮助开发者快速构建现代化的 web 应用程序。

官网:Element - 网站快速成型工具

一.ElementUI之动态树

1.前端模板演示

我们可以在官网-组件进行搜索:侧栏,就可以看到一个左侧的动态树

选择查看下面的代码进行复制

这里可以提供一段,当然,这只是一段模板,可以根据自己需求填写相关的信息

<el-menu>
	<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>
</el-menu>

2.数据绑定

2.1 通过链接获取后台数据

在对于的页面中编写方法请求数据地址并发起请求,绑定左侧菜单栏

export default {
    data() {
      return {
        collapsed: false,
        menu:[]
      }
    },
    created() {
      this.$root.bus.$on('shrink', t => {
        this.collapsed = t;
      });
      //获取后台请求数据的地址
      let url = this.axios.urls.SYSTEM_MENU;
      this.axios.get(url, {}).then(d => {
          this.menu=d.data.rows;
      }).catch(e => {});
    }



  }

2.2 对链接进行绑定

在api包中的action.js文件中进行绑定访问的链接地址

export default {
	'SERVER': 'http://localhost:8080/', //服务器
	'SYSTEM_USER_DOLOGIN': 'user/userLogin', //登陆
	'SYSTEM_USER_DOREG': 'user/userRegister', //注册
  'SYSTEM_MENU': 'module/queryRootNode', //注册左侧菜单树
	'getFullPath': k => { //获得请求的完整地址,用于mockjs测试时使用
		return this.SERVER + this[k];
	}
}

2.3添加动态路由

在我们要跳转的菜单栏添加动态路由

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

根据情况创建对应的目录结构,并创建相应的跳转页面示例:

2.4 配置路由

在router/index.js中配置

 {
      path: '/AppMain',
      name: 'AppMain',
      component: AppMain,
      children:[{
      path: '/LeftNav',
      name: 'LeftNav',
      component: LeftNav
    },
    {
      path: '/TopNav',
      name: 'TopNav',
      component: TopNav
    },
    {
      path: '/book/AddBook',
      name: 'AddBook',
      component: AddBook
    },
    {
      path: '/book/BookList',
      name: 'BookList',
      component: BookList
      }]
    },

3.效果演示

二.数据表格+动态分页

1.前端模板

<div class="Book" style="padding: 30px;">
    <!-- 输入框搜索 -->
    <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" plain @click="onSubmit">查询</el-button>
      </el-form-item>
    </el-form>
    <!-- 书籍的书籍表格 -->
    <el-table :data="tableData" style="width: 100%">
      <el-table-column prop="id" label="书籍ID"></el-table-column>
      <el-table-column prop="bookname" label="书籍名称"></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" style="padding: 20px;">
      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"
        background :page-sizes="[10, 20, 30, 40]" :page-size="rows" layout="total, sizes, prev, pager, next, jumper"
        :total="total">
      </el-pagination>
    </div>
  </div>

前端组件功能详解 

  1. <div class="Book">:这是一个CSS类为"Book"的<div>元素,它可能用于样式控制或布局目的。

  2. 输入框搜索部分:

    • <el-form :inline="true" class="demo-form-inline">:这是一个Element UI的表单组件,设置为内联显示(:inline="true")。内联表单通常用于简单的搜索功能。
    • <el-form-item label="书籍名称 : ">:表单项,用于包裹输入框,并设置了一个标签文本"书籍名称"。
    • <el-input v-model="bookname" placeholder="书籍名称"></el-input>:这是一个Element UI的输入框组件,它使用v-model双向绑定到bookname数据属性,允许用户输入书籍名称,并设置了一个占位符文本"书籍名称"。
    • <el-button type="primary" plain @click="onSubmit">查询</el-button>:这是一个Element UI的按钮组件,用于触发查询操作。它被设置为主要按钮样式(type="primary"),并绑定了点击事件@click="onSubmit",当用户点击时会调用组件中的onSubmit方法。
  3. 书籍表格部分:

    • <el-table :data="tableData" style="width: 100%">:这是一个Element UI的表格组件,用于显示书籍列表数据。:data="tableData"将表格的数据与组件中的tableData数据属性绑定,style="width: 100%"设置表格宽度为100%。
    • <el-table-column prop="id" label="书籍ID"></el-table-column>:这是一个表格列组件,定义了一列书籍ID,使用prop属性指定数据属性名,label属性设置列标题。
    • 类似地,有三个更多的<el-table-column>用于显示书籍的名称、价格和类型。
  4. 分页部分:

    • <div class="block" style="padding: 20px;">:一个用于包裹分页组件的<div>元素,它可能用于样式控制或布局。
    • <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page" background :page-sizes="[10, 20, 30, 40]" :page-size="rows" layout="total, sizes, prev, pager, next, jumper" :total="total">:这是一个Element UI的分页组件,它允许用户在表格数据中进行分页浏览。在这里,它绑定了一些事件(@size-change@current-change),并使用属性绑定来配置分页的一些参数,包括当前页码、可选择的页大小列表、每页显示的行数、布局方式和总记录数。

总的来说,这个组件创建了一个用户可以输入书籍名称并点击查询按钮来搜索书籍的界面。搜索结果以表格的形式展示,并且提供了分页功能,以便在大量书籍数据中进行浏览。当用户更改页大小或切换页码时,会触发相应的事件,调用组件中的方法来获取并显示相应的书籍数据。

 2.通过JS交互获取后端数据

export default {
    data() {
      return {
        bookname: '',
        tableData: [],
        rows: 10,
        total: 0,
        page: 1
      }
    },
    methods: {
      handleSizeChange(r) {
        //当页大小发生变化
        let params = {
          bookname: this.bookname,
          rows: r,
          page: this.page
        }
        // console.log(params)
        this.query(params);
      },
      handleCurrentChange(p) {
        //当前页码大小发生变化
        let params = {
          bookname: this.bookname,
          rows: this.rows,
          page: p
        }
        // console.log(params)
        this.query(params);
      },
      query(params) {
        //获取后台请求书籍数据的地址
        let url = this.axios.urls.SYSTEM_BookList;
        this.axios.get(url, {
          params: params
        }).then(d => {
          console.log(url)
          this.tableData = d.data.rows;
          this.total = d.data.total;
        }).catch(e => {});
      },
      onSubmit() {
        let params = {
          bookname: this.bookname
        }
        console.log(params)
        this.query(params);
        this.bookname = ''
      }
    },
    created() {
      this.query({})
    }
  }

方法详解: 

1.handleSizeChange(r): 当页大小发生变化时调用的方法,根据参数r(新的页大小)以及当前的booknamepage,构建请求参数并调用query方法进行数据查询。

handleCurrentChange(p): 当前页码大小发生变化时调用的方法,根据参数p(新的页码)以及当前的booknamerows,构建请求参数并调用query方法进行数据查询。

2.query(params): 发起后台请求书籍数据的方法,根据传入的参数params,发送GET请求到this.axios.urls.SYSTEM_BookList指定的后台接口地址,然后将返回的数据的rows(行数据)和total(总记录数)分别赋值给tableDatatotal

3.onSubmit(): 表单提交方法,在查询书籍数据时调用,根据当前的bookname构建请求参数并调用query方法进行数据查询,然后将bookname重置为空字符串

3 效果演示

 

今天的分享到这里就结束了,感谢各位大大的观看,各位大大的三连是博主更新的动力,感谢谢谢谢谢谢谢谢谢各位的支持!!!!! 

 

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
很抱歉,作为AI语言模型,我无法提供代码编写服务。但是,我可以为您提供一些指导和建议。 首先,您需要安装Vue3、TypeScript和ElementUI。然后,您可以创建一个Vue组件,该组件包含一个分页表格。您可以使用ElementUI的el-table和el-pagination组件来实现这个分页表格。 在组件中,您需要定义一些数据,例如表格数据、当前页码、每页显示的行数等。您还需要定义一些方法来处理分页表格数据的加载。 以下是一个简单的示例: ```html <template> <div> <el-table :data="tableData" border> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="age" label="Age"></el-table-column> <el-table-column prop="address" label="Address"></el-table-column> </el-table> <el-pagination @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalRows" ></el-pagination> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; import { ElTable, ElTableColumn, ElPagination } from 'element-plus'; export default defineComponent({ name: 'PaginationTable', components: { ElTable, ElTableColumn, ElPagination }, data() { return { tableData: [], currentPage: 1, pageSize: 10, totalRows: , }; }, methods: { async loadData() { // load data from server based on currentPage and pageSize // update tableData and totalRows }, handleCurrentChange(page: number) { this.currentPage = page; this.loadData(); }, }, mounted() { this.loadData(); }, }); </script> ``` 在这个示例中,我们使用了ElementUI的el-table和el-pagination组件来实现分页表格。我们定义了一些数据,例如表格数据、当前页码、每页显示的行数和总行数。我们还定义了一个loadData方法来加载表格数据,并在mounted钩子中调用它。我们还定义了一个handleCurrentChange方法来处理页码变化事件,并在el-pagination组件中使用它。 当用户点击页码或更改每页显示的行数时,handleCurrentChange方法将被调用,并更新currentPage和pageSize数据。然后,loadData方法将被调用,从服务器加载新的表格数据,并更新tableData和totalRows数据。最后,el-pagination组件将根据这些数据重新渲染分页器。 当然,这只是一个简单的示例。您可能需要根据您的具体需求进行更改和扩展。但是,这个示例应该可以帮助您入门Vue3、TypeScript和ElementUI分页表格的编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChatYU.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值