umy-ui树形结构表格懒加载用法详解

效果图
在这里插入图片描述
在做后台时,使用的iview组件库中的树形表格,但数据量过大时会导致页面卡死,借助umy-ui的虚拟表格完美解决了数据量大卡顿的问题。

先放文档:http://www.umyui.com/umycomponent/u-table-column-api

安装

npm install umy-ui

引入

全局引入:在main.js中放入以下代码

  import Vue from 'vue';import UmyUi from 'umy-ui'import 'umy-ui/lib/theme-chalk/index.css';// 引入样式import App from './App.vue';Vue.use(UmyUi);new Vue({el: '#app',render: h => h(App)});

按需引入:

先安装 babel-plugin-component
npm install babel-plugin-component -D在 .babelrc 中plugins添加:
{"plugins": [["component",{"libraryName": "umy-ui","styleLibraryName": "theme-chalk"}]]
}在main.js中按需引入:(这里我只需要用到表格,所以只引入了表格,完整组件列表和引入方式可以查看官网)
import  UTable  from 'umy-ui'
Vue.use(UTable)

使用

<u-tablestyle="margin-top: 10px;"ref="plTreeTable"fixed-columns-rollbeautify-tableheader-drag-style:height="tableHeight":treeConfig="{children: 'children',expandAll: false,lazy: true,load: load,hasChildren: 'hasChildren'}"@toggle-tree-expand="toggleTreeExpand"use-virtualrow-id="id"row-key="id"border><!--u-table大数据表格 你需要在列上指定某个列显示展开收起 treeNode属性--><u-table-column:tree-node="true"prop="name"label="名称":width="200"/><!-- 表头,其中prop是需要显示的字段 --><u-table-columnv-for="item in columns16":key="item.key":prop="item.key":label="item.title":width="item.width"align="center"/><!--这里是自己添加的右侧操作按钮,根据需求而定--><u-table-column :resizable="false":width="120"align="center"label="操作"><template slot-scope="scope"><Button size="small" title="下级" icon="md-add-circle" @click="showModal(null, 4, '下级', scope.row.id)"></Button><Button size="small" title="修改" icon="md-create" @click="showModal(scope.row.id, 2, '修改')"></Button><Button size="small" title="删除" icon="md-trash" @click="removeTableHandle(scope.row)"></Button></template></u-table-column></u-table><script>export default {data () {return {columns: [ // 表头数据{title: '编号',key: 'id',width: 140,},{title: '关联科目',key: 'glkmmc',align: 'center',},{title: '车型',key: 'jzlx',align: 'center',},{title: '大类名称',key: 'ctype',align: 'center',},{title: '描述',key: 'des',align: 'center',},{title: '题目数量',key: 'questcount',align: 'center',},],data5: [], // 完整表格数据data13: [], // }},mounted() {},methods:{async getTreeData(){ // 请求数据let paramData = {type: 'list',service: 'xxx',src: 'xxx',};const res = await this.$http(paramData);if (res.code == 200 && res.success) {this.data5 = JSON.parse(JSON.stringify(res.data)); // 存储完整数据用作展开子集懒加载时使用this.data13 = res.data; // 这个是实际渲染出来的数据,先将子集置空,保证页面运行速度this.data13.map(v=>{if(v.children.length>0){v.children = [];v.hasChildren = true; // 在children 为空的情况下,添加 hasChildren 为true才会显示展开按钮}})// 设置表格数据this.$refs.plTreeTable.reloadData([ ...this.data13])}},// 子集收起展开时触发toggleTreeExpand (row, treeExpanded, event) {// console.log(row, treeExpanded, event,'toggleTreeExpand')},load (row, resolve) { // row是当前点击的内容,拿到id再去找完整数据中对应的子集var res  = this.data5.filter(v=>{return v.id == row.id;})[0];setTimeout(() => {if ( row.id ) {resolve(res .children)} }, 1000)},}}</script>

可选择的树形表格

在这里插入图片描述

使用

    <u-tablestyle="margin-top: 10px;"ref="plTreeTable"fixed-columns-rollbeautify-table:height="tableHeight"header-drag-style:treeConfig="{children: 'children',expandAll: false,lazy: true,load: load,hasChildren: 'hasChildren'}"@selection-change="handleSelectionChange"use-virtualrow-id="id"row-key="id"border><u-table-column border-line type="selection" width="55" :selectable="selectable"/><!--u-table大数据表格 你需要在列上指定某个列显示展开收起 treeNode属性--><u-table-column:tree-node="true"prop="name"label="名称":width="200"/><u-table-columnv-for="item in columns":key="item.key":prop="item.key":label="item.title":width="item.width"align="center"/></u-table><script>export default {data () {return {columns: [ // 表头数据{title: '编号',key: 'id',width: 140,},{title: '关联科目',key: 'glkmmc',align: 'center',},{title: '车型',key: 'jzlx',align: 'center',},{title: '大类名称',key: 'ctype',align: 'center',},{title: '描述',key: 'des',align: 'center',},{title: '题目数量',key: 'questcount',align: 'center',},],data5: [], // 完整表格数据data13: [], // }},mounted() {},methods:{async getTreeData(){ // 请求数据let paramData = {type: 'list',service: 'xxx',src: 'xxx',};const res = await this.$http(paramData);if (res.code == 200 && res.success) {this.data5 = JSON.parse(JSON.stringify(res.data)); // 存储完整数据用作展开子集懒加载时使用this.data13 = res.data; // 这个是实际渲染出来的数据,先将子集置空,保证页面运行速度this.data13.map(v=>{if(v.children.length>0){v.children = [];v.hasChildren = true; // 在children 为空的情况下,添加 hasChildren 为true才会显示展开按钮}})// 设置表格数据this.$refs.plTreeTable.reloadData([ ...this.data13])}},load (row, resolve) { // row是当前点击的内容,拿到id再去找完整数据中对应的子集var res  = this.data5.filter(v=>{return v.id == row.id;})[0];setTimeout(() => {if ( row.id ) {resolve(res .children)} }, 1000)},// index对应的行是否可选selectable (row, index) {// if (index==1) {return true// }},// 点击复选框按钮handleSelectionChange(val){this.chooseList = val; // 获取到点击的值}}}</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apifox 调用camunda engine-rest接口报错“type“: “NotFoundException“

官方文档在这&#xff1a; https://docs.camunda.org/rest/camunda-bpm-platform/7.19/ 现象 engine-rest本是可以直接请求的&#xff0c;我把openapi导入到apifox之中了&#xff0c;我测试一下接口没有能请求成功的&#xff0c;基本都报以下的错。 报错如下 {"type&qu…

Flutter:flutter_local_notifications——消息推送的学习

前言 注&#xff1a; 刚开始学习&#xff0c;如果某些案例使用时遇到问题&#xff0c;可以自行百度、查看官方案例、官方github。 简介 Flutter Local Notifications是一个用于在Flutter应用程序中显示本地通知的插件。它提供了一个简单而强大的方法来在设备上发送通知&#…

【LeetCode-简单】剑指 Offer 24. 反转链表(详解)

题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 方法&#xff1a;迭代 思路 定义三个指针&#xff0c;一起往后走&#xff0c;走一步就修改mid指针的next&#xff0c;原本是mid的next 是right&#xff0c;我们修改成l…

安装支持vs2019的MFC(解决MSBuild 错误 MSB8041、MSB8042)

安装支持MFC的vs2019&#xff08;解决MSBuild 错误 MSB8041、MSB8042&#xff09; 常用安装选项解决MSBuild 错误 常用安装选项 解决MSBuild 错误 安装上述勾选内容后&#xff0c;即可解决MSBuild 错误 MSB8041 MSB8041&#xff1a;此项目需要 MFC/ATL 库。 https://learn.mic…

Easy-Es笔记

一、Easy-ES概述 Easy-Es&#xff08;简称EE&#xff09;是一款由国内开发者打造并完全开源的ElasticSearch-ORM框架。在原生 RestHighLevelClient 的基础上&#xff0c;只做增强不做改变&#xff0c;为简化开发、提高效率而生。Easy-Es采用和MP一致的语法设计&#xff0c;降低…

STM32CubeMX配置STM32G031多通道ADC采集(HAL库开发)

时钟配置HSI主频配置64M 勾选打开8个通道的ADC 使能连续转换模式 配置好串口&#xff0c;选择异步模式配置好需要的开发环境并获取代码 修改main.c 串口重定向 #include "stdio.h" int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch…

Verilog | Round_Robin_Arbiter

重写了权重轮询仲裁&#xff0c;添加lock输入信号&#xff0c;表示请求方收到了仲裁许可&#xff0c;在对应的lock拉低之前&#xff0c;仲裁器不可以开启新的仲裁。 Generics Generic nameTypeValueDescriptionN4 Ports Port nameDirectionTypeDescriptionclkinputrst_ninp…

牛客上面的约瑟夫环问题

对于本题 我感觉还是链表做起来舒服 数组也可以做 但是数组需要去控制循环 不太好控制 我之前搞了 最后看别人的实现 但是链表搞了一次就搞好了 香的嘞~ 下面是代码 用单链表实现循环 再去删除要删除的人 5个人 数到2 你们在纸上画图 我就不画了 对于数组实现你们可以去…

文件上传漏洞 -- uploadlabs为例

文件上传漏洞原理 一些web应用程序中允许上传图片、视频、头像和许多其他类型的文件到服务器中。 文件上传漏洞就是利用服务端代码对文件上传路径变量过滤不严格将可执行的文件上传到一个到服务器中 &#xff0c;再通过URL去访问以执行恶意代码。 非法用户可以利用上传的恶意脚…

onnxruntime (C++/CUDA) 编译安装

一、克隆及编译 git clone --recursive https://github.com/Microsoft/onnxruntime cd onnxruntime/ git checkout v1.8.0如果克隆的时候报错&#xff1a; 执行以下&#xff1a; apt-get install gnutls-bin git config --global http.sslVerify false git config --global h…

20.2 HTML 常用标签

1. head头部标签 <head>标签用于定义网页的头部, 其中的内容是给浏览器读取和解析的, 并不在网页中直接显示给用户. <head>标签通常包含以下一些常见的子标签: - <title>: 定义网页的标题, 在浏览器的标题栏或标签页上显示. - <meta>: 用于设置网页的…

linux学成之路(基础篇)(二十三)MySQL服务(数据库备份——补充)

目录 一、MySQL数据库备份 概述 重要性 造成数据丢失的原因 二、备份类型 一、物理与逻辑角度 一、物理备份 二、逻辑备份 二、数据库备份策略角度 一、完整备份 二、增量备份 三、常见的备份方法 一、物理备份 二、使用专用备份工具 三、通过启用二进制日志增量…

Idea 结合docker-compose 发布项目

Idea 结合docker-compose 发布项目 这里写目录标题 Idea 结合docker-compose 发布项目Docker 开启远程访问功能 添加相应端口配置IDEA 链接Docker配置项目 docker-compose.yml本地还需要安装 dockerwin11 安装本地Docker 可能存在问题 Linux内核不是最新 Docker 开启远程访问功…

IP协议详解

IP协议详解 IP首部&#xff08;IPv4&#xff09;IP分片IP分片的概念IP分片的原因IP分片的具体实现 IP首部&#xff08;IPv4&#xff09; IP首部最小是20个字节&#xff0c;最大是60个字节。 第一个4字节 版本号&#xff08;Version&#xff09;&#xff0c;4位&#xff1b;用…

详解Mybatis之自动映射 自定义映射问题

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 一、Mybatis中的自动映射是什么&#xff1f;二、Mybatis中的自定义映射是什么&#xff1f;三、为什…

工作纪实34-emoji表情包存储异常,修改db的字段类型

线上问题&#xff0c;发现emojo表情写入数据库出现异常 修改mysql字段的字符集 ALTER TABLE customer_cycle_info MODIFY COLUMN customer_sales_remark varchar(500) CHARACTER SET

【node】使用express+gitee搭建图床,并解决防盗链问题

首先创建一个gitee的项目&#xff0c;详细步骤我就不一一说明 注解&#xff1a;大家记得将这个项目开源&#xff0c;还有记得获取自己的私钥&#xff0c;私钥操作如下&#xff1a; node依赖下载&#xff1a; "axios": "cors": "express"…

IOS自动化测试环境搭建教程

目录 一、前言 二、环境依赖 1、环境依赖项 2、环境需求与支持 三、环境配置 1、xcode安装 2、Git安装 3、Homebrew安装&#xff08;用brew来安装依赖&#xff09; 4、npm和nodejs安装 5、libimobiledevice安装 6、idevicesinstaller安装 7、ios-deploy安装 8、Ca…

安卓的播放器对比与选型(vlc,EXOplayer,Ijkplayer,GSYVideoPlayer)详细过程

安卓的播放器对比与选型&#xff08;vlc&#xff0c;EXOplayer&#xff0c;Ijkplayer&#xff0c;GSYVideoPlayer&#xff09;&#x1f4fa;详细过程 前言一、vlc二、EXOplayer三、Ijkplayer四、GSYVideoPlayer&#x1f525;&#x1f525;&#x1f525;五、其他的开源播放器jia…

GPT-AI 使用的技术概览

ChatGPT 使用的技术概览 智心AI-3.5/4模型&#xff0c;联网对话&#xff0c;MJ快速绘画 从去年 OpenAI 发布 ChatGPT 以来&#xff0c;AI 的能力再次惊艳了世人。在这样的一个时间节点&#xff0c;重新去学习相关技术显得很有必要。 ChatGPT 的内容很多&#xff0c;我计划采用…