位置: IT常识 - 正文

Vue Element UI 中 el-table 树形数据 tree-props 多层级使用避坑

编辑:rootadmin
Vue Element UI 中 el-table 树形数据 tree-props 多层级使用避坑

推荐整理分享Vue Element UI 中 el-table 树形数据 tree-props 多层级使用避坑,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

实现效果: element官网提示设置tree-props为{children: ‘children’,hasChildren: ‘hasChildren’},data数据需要设置children和hasChildren属性,row-key也绑定了数据的唯一值变量id,但是树形结构的第三级就是出不来

如图

可以看到只有第二级,第三级并没有,于是查看了数据格式,和官方要求的也是一样的呢,但是第三层级就是不展示

最后发现

在el-table中,支持树类型的数据的显示。当 row 中包含 children 字段时,被视为树形数据。渲染树形数据时,必须要指定 row-key。支持子节点数据异步加载。

Vue Element UI 中 el-table 树形数据 tree-props 多层级使用避坑

设置 Table 的 lazy 属性为 true 与加载函数 load 。通过指定 row 中的 hasChildren 字段来指定哪些行是包含子节点。children 与 hasChildren 都可以通过 tree-props 配置。

default-expand-all属性表示默认展开,不需要展开可以删除。row-key="id" 和 row里面的属性有children字段(即数据里面需要有children字段) 是必须的,:tree-props="{children: ‘children’,hasChildren: ‘hasChildren’}可有可无。

如果不是懒加载的话,后端不要设置hasChildren 这个属性,要不然树形不能显示;如果是懒加载,则需要设置hasChildren字段。

错误代码: 因为我的数据不是懒加载,所以不需要添加后面的 hasChildren: 'hasChildren' 配置 并且在组装数据格式时,也不需要加上 hasChildren=true / hasChildren=false 的字段

完整代码:

<!--表格渲染--> <el-table :header-cell-style="{ color: '#FFF', background: '#333' }" :cell-style="{ color: '#FFF', background: '#333' }" row-key="id" :data="tableData" style="width: 100%" :default-sort="{ prop: '', order: '' }" @sort-change="sortChange" :tree-props="{ children: 'children' }" > <template slot="empty"> <span style="color: #969799">{{ $t("NeoLight.empty") }}</span> </template> <el-table-column prop="barcode" :sortable="true" :label="$t('NeoLight.barcodeNo')" width="180" /> <el-table-column prop="partNumber" :sortable="true" label="料号" width="150" /> <el-table-column prop="warehouseCode" :sortable="true" label="库别" width="150" /> <el-table-column prop="batch" :sortable="true" :label="$t('barcode.batch')" /> <el-table-column prop="provider" :sortable="true" :label="$t('storagePos.providerNumber')" /> <el-table-column prop="posName" :sortable="true" :label="$t('NeoLight.storageNo')" /> <el-table-column prop="dateCode" :sortable="true" label="DC" /> <el-table-column prop="reelAmount" :sortable="true" label="卷数" /> <el-table-column prop="amount" :sortable="true" :label="$t('NeoLight.amount')" /> <el-table-column prop="firstPutInDate" :sortable="true" :label="$t('NeoLight.firstPutInDate')" /> <el-table-column prop="putInDate" :sortable="true" :label="$t('NeoLight.putInDate')" /> </el-table>

接口返回的数据 为 二级 数据格式 但是table表格中要展示 三个层级 需要前端自己来处理 组装需要的格式 (有和我一样的小伙伴,可以让后端组装好格式返回噢)

let list = [ {canCheckOutTime: 1669613688280enabled: truegroupId: ""groupName: ""h: 8humidity: ""id: "21"labelId: ""labelName: ""posName: "C1"priority: 1storageId: "1"temperature: ""used: truew: 7warmPos: false}, { barcode: { amount: 23000, barcode: "CS0004", batch: "", children: [ { amount: 3000, barcode: "M150171314022J1RV", batch: "A436105244", createDate: "2022-12-01 15:55:32", dateCode: "2209", firstPutInDate: "2022-12-01 15:55:33", fullCode: "152S01563-017131|A436105244-2209|3000|M150171314022J1RV|TAIYO|4101546111011J1007FS", height: 8, id: "92", initialAmount: 0, labelAmount: 3000, maxStorageTime: 0, mixTime: 0, onlySingleOut: false, partNumber: "152S01563", partitionCount: 1, plateSize: 7, posName: "CS0004-1", provider: "TAIYO", providerNumber: "017131", putInDate: "2022-12-01 15:55:33", putInTime: 1669881333306, putInTimeStr: "2022-12-01 15:55:306", reelAmount: 1, relationCodes: [], size: "7X8", solder: false, solderStatus: 0, startWarmTime: -1, status: 0, thickness: "", type: 0, updateDate: "2022-12-01 15:55:33", used: false, usedCount: 0, warehouseCode: "W10B", warmTime: 0, }, { amount: 10000, barcode: "A1179700142220JB6S", batch: "TPA2233000KP", createDate: "2022-12-01 15:56:01", dateCode: "2022080", firstPutInDate: "2022-12-01 15:56:02", fullCode: "118S0176-797001|TPA2233000KP-20220807|10000|A1179700142220JB6S|CYNTEC|TPA2233000KP0000JB6S", height: 8, id: "95", initialAmount: 0, labelAmount: 10000, maxStorageTime: 0, mixTime: 0, onlySingleOut: false, partNumber: "118S0176", partitionCount: 2, plateSize: 7, posName: "CS0004-2", provider: "CYNTEC", providerNumber: "797001", putInDate: "2022-12-01 15:56:02", putInTime: 1669881362306, putInTimeStr: "2022-12-01 15:56:306", reelAmount: 1, relationCodes: [], size: "7X8", solder: false, solderStatus: 0, startWarmTime: -1, status: 0, thickness: "", type: 0, updateDate: "2022-12-01 15:56:02", used: false, usedCount: 0, warehouseCode: "W10B", warmTime: 0, }, { amount: 10000, barcode: "A1179700142220JB7L", batch: "TPA2233000KP", createDate: "2022-12-01 15:56:06", dateCode: "2022080", firstPutInDate: "2022-12-01 15:56:07", fullCode: "118S0176-797001|TPA2233000KP-20220807|10000|A1179700142220JB7L|CYNTEC|TPA2233000KP0000JB7L", height: 8, id: "96", initialAmount: 0, labelAmount: 10000, maxStorageTime: 0, mixTime: 0, onlySingleOut: false, partNumber: "118S0176", partitionCount: 2, plateSize: 7, posName: "CS0004-2", provider: "CYNTEC", providerNumber: "797001", putInDate: "2022-12-01 15:56:07", putInTime: 1669881367304, putInTimeStr: "2022-12-01 15:56:304", reelAmount: 1, relationCodes: [], size: "7X8", solder: false, solderStatus: 0, startWarmTime: -1, status: 0, thickness: "", type: 0, updateDate: "2022-12-01 15:56:07", used: false, usedCount: 0, warehouseCode: "W10B", warmTime: 0, }, ], createDate: "2022-12-01 15:55:05", firstPutInDate: "2022-12-01 16:29:47", fullCode: "CS0004-1", height: 8, id: "90", initialAmount: 0, labelAmount: 0, maxStorageTime: 0, mixTime: 0, onlySingleOut: false, outOpor: "", partNumber: "CS", partitionCount: 0, plateSize: 7, posName: "B19", putInDate: "2022-12-02 14:05:57", putInTime: 1669883387333, putInTimeStr: "2022-12-01 16:29:333", reelAmount: 3, relationCodes: [], size: "7X8", solder: false, solderStatus: 0, startWarmTime: -1, status: 0, subCodeList: [ ], thickness: "", type: 0, updateDate: "2022-12-02 14:05:57", used: true, usedCount: 4, usedDate: "2022-12-01 17:03:30", warmTime: 0, }, canCheckOutTime: 1669961157870, enabled: true, groupId: "", groupName: "", h: 8, humidity: "", id: "59", labelId: "", labelName: "", posName: "B19", priority: 19, storageId: "3", temperature: "", used: true, w: 7, warmPos: false, }, ];

可以看出

有的数据中没有children字段,有的有children字段 后端返回的树形结构数据一个二级数据格式,还需要前端处理,将children中每一条数据里的 posName 字段值取出来 并赋值给一个 barcode 的新字段 加上id 组成第二级数据,后端返回的 第二层级数据 作为 树形结构的 第三层级数据 使用

js代码 methods: { //从接口中获取数据 getList() { let data = this.query; outerInventory(data).then((res) => { this.pageLength = res.totalElements; this.changeTableJson(res.content); //调用组装数据方法 }); }, // 组装表格需要的数据格式 changeTableJson(listArray) { if (!this.isLoading) { const list2 = []; for (let jsonElement of listArray) { if (!jsonElement.barcode || !jsonElement.barcode.children) { list2.push(jsonElement); continue; } jsonElement.barcode.children = jsonElement.barcode.children.map( (item) => { if (item.barcode) { let temp = JSON.parse(JSON.stringify(item)); return { id: Math.floor(Math.random() * 1000) + "", barcode: item.posName, children: [temp], }; } } ); list2.push(jsonElement.barcode); } this.tableData = list2; this.isLoading = true; console.log(list2); } },}三级树形结构 官方例子<el-table :data="tableData1" style="width: 100%" row-key="id" :tree-props="{children: 'children'}"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> </el-table>data() { return { tableData1: [{ id: 1, date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { id: 2, date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄', children: [ { id: 31, date: '2020-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄', children: [ { id: 33, date: '2020-05-32', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' } ] }, { id: 32, date: '2020-05-32', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄', children: [ { id: 34, date: '2020-05-32', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' } ] } ] }, { id: 3, date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄', }, { id: 4, date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }] } },实现效果

本文链接地址:https://www.jiuchutong.com/zhishi/297447.html 转载请保留说明!

上一篇:常见浏览器兼容性问题及解决办法总结(常见浏览器兼容软件)

下一篇:06_HTML_表单提交的细节(submit提交按钮的使用细节)(html 提交表单)

  • ipad8用一代笔还是二代笔(ipad8 2020用一代笔还是二代笔)

    ipad8用一代笔还是二代笔(ipad8 2020用一代笔还是二代笔)

  • 苹果13promax充电器多少瓦(苹果13promax充电慢怎么回事)

    苹果13promax充电器多少瓦(苹果13promax充电慢怎么回事)

  • 新买的华为nova4e不能发信息(新买的华为Nova 8手机老是自动重启)

    新买的华为nova4e不能发信息(新买的华为Nova 8手机老是自动重启)

  • iphonexsmax重量多少克(xsmax重量多少克)

    iphonexsmax重量多少克(xsmax重量多少克)

  • 水冷主机用换水冷液吗(水冷主机用换水管吗)

    水冷主机用换水冷液吗(水冷主机用换水管吗)

  • 荣耀隐私空间找不到了(荣耀隐私空间找不到设备)

    荣耀隐私空间找不到了(荣耀隐私空间找不到设备)

  • 手机上只显示vivo(手机上只显示一个G)

    手机上只显示vivo(手机上只显示一个G)

  • iphone7刷新率(iphone7刷新率多少hz)

    iphone7刷新率(iphone7刷新率多少hz)

  • 微视视频最长多长时间(微视视频最长多少分钟)

    微视视频最长多长时间(微视视频最长多少分钟)

  • qq船的标志怎么获得(qq船的标志怎么判断最频繁)

    qq船的标志怎么获得(qq船的标志怎么判断最频繁)

  • 加湿器算大功率电器吗(加湿器额定功率大好还是小好)

    加湿器算大功率电器吗(加湿器额定功率大好还是小好)

  • qq认证学生会员有什么坏处(qq会员学生认证可以乱填吗)

    qq认证学生会员有什么坏处(qq会员学生认证可以乱填吗)

  • pb是多大容量(pbw是多少g)

    pb是多大容量(pbw是多少g)

  • 6s原装电池多少毫安(苹果6s的原装电池多少钱)

    6s原装电池多少毫安(苹果6s的原装电池多少钱)

  • 微信消息延迟几分钟才收到(微信消息延迟几天收到是怎么回事)

    微信消息延迟几分钟才收到(微信消息延迟几天收到是怎么回事)

  • vivox30左边按键是干什么的(vivo30左边的键是什么)

    vivox30左边按键是干什么的(vivo30左边的键是什么)

  • opporeno2与opporeno2z有什么不同(opporeno2与opporeno2z那个屏幕大)

    opporeno2与opporeno2z有什么不同(opporeno2与opporeno2z那个屏幕大)

  • a1489是mini几(a1490是mini几代是4g吗)

    a1489是mini几(a1490是mini几代是4g吗)

  • 淘宝如何看自己几星(淘宝如何看自己的等级)

    淘宝如何看自己几星(淘宝如何看自己的等级)

  • 小米m1904f3bc是什么型号(小米型号m1903f11a)

    小米m1904f3bc是什么型号(小米型号m1903f11a)

  • 苹果xs双卡怎么安装(苹果xs双卡怎么设置)

    苹果xs双卡怎么安装(苹果xs双卡怎么设置)

  • 华为5ipro上市时间(华为5ipro是5g手机吗)

    华为5ipro上市时间(华为5ipro是5g手机吗)

  • 应用宝禁止安装怎么设置(应用宝禁止安装如何解除)

    应用宝禁止安装怎么设置(应用宝禁止安装如何解除)

  • 华为手机控制中心在哪里(华为手机控制中心在哪里设置)

    华为手机控制中心在哪里(华为手机控制中心在哪里设置)

  • vivos1屏幕是哪种材质(vivos1屏幕是什么屏)

    vivos1屏幕是哪种材质(vivos1屏幕是什么屏)

  • 如何调整mac分辨率?苹果mac分辨率设置方法(mac的分辨率怎么调)

    如何调整mac分辨率?苹果mac分辨率设置方法(mac的分辨率怎么调)

  • 蓝桥杯拿到一等奖,并分享经验(蓝桥杯等级)

    蓝桥杯拿到一等奖,并分享经验(蓝桥杯等级)

  • js中异步是什么意思(js异步方式有哪些)

    js中异步是什么意思(js异步方式有哪些)

  • dedecms教程:织梦广告添加后,前台未更新显示的(织梦cms可以商用吗)

    dedecms教程:织梦广告添加后,前台未更新显示的(织梦cms可以商用吗)

  • 个体工商户应如何购买社会保险公积金
  • 普通人如何交五险一金
  • 税务报表的利润表
  • 间接费用分配方法不包括哪些
  • 实际成本法和计划成本法的会计分录
  • 折让折扣负数发票的会计处理
  • 房地产企业分立会计处理及税务筹划案例解析
  • 营改增后房地产公司税种及税率
  • 临时营业执照有效期多久
  • 利润分配的核算PPT
  • 企业租给企业房产税税率
  • 抵减的增值税如何记账
  • 月末本年利润余额怎么算
  • 应付账款少记违反什么认定
  • 付款单中未全付款怎么办
  • 股权转让受让人违约
  • 从农民手中购买农产品税率
  • 蔬菜营销方案案例范文
  • 小规模纳税人设备税率
  • 出口分为哪四步
  • 年中入职个税怎么预扣
  • 补缴员工社保银行怎么查
  • 工程部物品领用表格模板
  • 个人报销汽油费会计分录
  • 工资计提如何做账
  • 计提固定资产会计科目
  • ios路由设计
  • linuxnl
  • 待抵扣的进项税因不能抵扣做转出的会计处理
  • 客户罚款记哪个科目
  • 支付服务器年租什么意思
  • 笔记本默认网关不可用怎么修复
  • php数组函数输出《咏雪》里有多少"片"字
  • linux怎样使用
  • 企业内部研究开发项目开发阶段的支出
  • 增值税不允许抵扣计入什么科目
  • 资产减值损失影响当期利润吗
  • php编程获取音频信息
  • 讲讲vue3下会造成响应式丢失的情况
  • 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
  • 公司未实缴能破产吗
  • 研发费用计入营业利润吗
  • js中同步如何理解
  • 工资和五险一金在公司发,个税在子公司扣
  • 专项应付款的账务处理
  • file file=new file()的作用
  • 将织梦dedecms转换到wordpress
  • sql server的go
  • 收到承兑汇票在什么科目
  • 以货换货什么意思
  • 房地产企业进项税抵扣的时间
  • 诉讼费可以退回私账嘛
  • 购进材料,已付,材料尚未验收入库
  • 未开票收入账务处理分录
  • 公司差旅费报销标准表
  • 认证测试方式有哪几种
  • 营业执照经营范围怎么变更
  • 物业管理企业应履行的义务包括
  • 启用账簿时应在账簿上签名或盖章的是
  • win10重置登录
  • xp如何给文件夹加密码
  • windows server2012安装完没有桌面
  • linux 使用
  • win8怎么打开蓝牙设置
  • win7一开机就弹窗
  • win8程序和功能在哪
  • cocos编程
  • 360安全卫士检测出来高危漏洞需要修复吗
  • 64位Win7环境下vs2013配置opengl
  • javascript怎么设置字体大小
  • android重写方法
  • 基于javascript的毕业设计选题
  • js实现跨域访问的几种方式
  • 国家税务局内蒙古税务
  • 多张发票怎么粘贴在a4纸上面
  • 四川增值税发票图片
  • 国税网查发票真伪
  • 税是每个人都要交的吗
  • 浙江残保金征收标准
  • 财税知识
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设