当前位置: 首页 > news >正文

上传文件夹里面的文件后,按树结构的table表格展示

1. 先处理最简单的

原始数据大概是这样:   

        let fileArr = [{progress: 100,status: '成功',type: '通号',webkitRelativePath: "六捷数据2023-05-04 163909/G163/Abis口详细信息_(G163)(380BL3544-0)(14984173988)(2018-01-24 174431.0740—2018-01-24 180347.9070).xls"},{progress: 100,status: '成功',type: '通号',webkitRelativePath: "六捷数据2023-05-04 163909/G163/A口详细信息_(G163)(380BL3544-0)(14984173988)(2018-01-24 174431.4760—2018-01-24 180346.8490).xls"},{progress: 100,status: '成功',type: '六捷',webkitRelativePath:'六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/PRI接口/PRI 信令(14985174166).xlsx'},{progress: 100,status: '成功',type: '六捷',webkitRelativePath: '六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/A接口/A 呼叫记录.xlsx'},{progress: 100,status: '成功',type: '六捷',webkitRelativePath: '六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/Abis接口/Abis 信令(14985174166).xlsx'},{progress: 100,status: '成功',type: '六捷',webkitRelativePath: '六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/Abis接口/Abis 呼叫记录.xlsx'},{progress: 100,status: '成功',type: '无',webkitRelativePath: '六捷数据2023-05-04 163909/dahhdahadab.xls'}]

处理方法:

let oraginArr = fileArr.map(v => ({ path: v.webkitRelativePath.split("/"), type: v.type, status: v.status, progress: v.progress}))function genDirTree(arr){let result = []if(arr.length === 0) return []let treeRoots =[...new Set(arr.map(v => v.path[0])) ]if(treeRoots.length === 0) returntreeRoots.map((v, i) =>{let temp = {name: v}let children = []arr.map((value, j) => {if(value.path && value.path[0] === v){let tempV = [...value.path]tempV.shift()if(tempV.length>0){children.push({ path: tempV, status: value.status, type: value.type, progress:value.progress})}temp.status = value.statustemp.type = value.typetemp.progress = value.progress}})if(children.length > 0){temp.children = genDirTree(children)}result.push(temp)} ) return result
}
genDirTree(oraginArr)
console.log('genDirTree:', genDirTree(oraginArr))

打印结果:

效果图展示: 

 全部代码如下:

<template><div><el-table:data="tableData"style="width: 100%;margin-bottom: 20px;"row-key="name"borderdefault-expand-all:tree-props="{children: 'children', hasChildren: 'hasChildren'}"><el-table-column prop="name" label="文件名" min-width="500"></el-table-column><el-table-column prop="status" label="状态"></el-table-column><el-table-column prop="type" label="厂家类型"></el-table-column><el-table-column prop="webkitRelativePath" label="原始文件名"></el-table-column></el-table></div>
</template><script>
export default {data () {return {tableData: [],fileArr: [{progress: 100,status: '成功',type: '通号',webkitRelativePath: "六捷数据2023-05-04 163909/G163/Abis口详细信息_(G163)(380BL3544-0)(14984173988)(2018-01-24 174431.0740—2018-01-24 180347.9070).xls"},{progress: 100,status: '成功',type: '通号',webkitRelativePath: "六捷数据2023-05-04 163909/G163/A口详细信息_(G163)(380BL3544-0)(14984173988)(2018-01-24 174431.4760—2018-01-24 180346.8490).xls"},{progress: 100,status: '成功',type: '六捷',webkitRelativePath:'六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/PRI接口/PRI 信令(14985174166).xlsx'},{id: 226,progress: 100,status: '成功',type: '六捷',webkitRelativePath: '六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/A接口/A 呼叫记录.xlsx'},{progress: 100,status: '成功',type: '六捷',webkitRelativePath: '六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/Abis接口/Abis 信令(14985174166).xlsx'},{progress: 100,status: '成功',type: '六捷',webkitRelativePath: '六捷数据2023-05-04 163909/DJ5908 (2022-11-16)/Abis接口/Abis 呼叫记录.xlsx'},{progress: 100,status: '成功',type: '无',webkitRelativePath: '六捷数据2023-05-04 163909/dahhdahadab.xls'}]}},methods: {genDirTree(arr) {let result = []if (arr.length === 0) return []let treeRoots = [...new Set(arr.map(v => v.path[0]))]if (treeRoots.length === 0) returntreeRoots.map((v, i) =>{let temp = {name: v}let children = []arr.map((value, j) => {if (value.path && value.path[0] === v) { let tempV = [...value.path]tempV.shift()if (tempV.length > 0) {children.push({ path: tempV, status: value.status, type: value.type, progress: value.progress})} else {// 最后文件一层 push 其他变量temp.status = value.statustemp.type = value.typetemp.progress = value.progress}}})if (children.length > 0) {temp.children = this.genDirTree(children)}result.push(temp)}) return result}},created() {let oraginArr = this.fileArr.map(v => ({ path: v.webkitRelativePath.split("/"), type: v.type, status: v.status, progress: v.progress}))console.log('oraginArr:', oraginArr)console.log('genDirTree:', this.genDirTree(oraginArr))this.tableData = this.genDirTree(oraginArr)},mounted() {}
}
</script>

相关文章:

上传文件夹里面的文件后,按树结构的table表格展示

1. 先处理最简单的 原始数据大概是这样: let fileArr [{progress: 100,status: 成功,type: 通号,webkitRelativePath: "六捷数据2023-05-04 163909/G163/Abis口详细信息_(G163)(380BL3544-0)(14984173988)(2018-01-24 174431.0740—2018-01-24 180347.9070).xls"…...

【error】root - Exception during pool initialization

报错提示&#xff1a;root - Exception during pool initialization. 错误原因&#xff1a; 配置数据库出错 我的错误配置&#xff1a; spring.datasource.urljdbc:mysql://localhost:3306/springboot?serverTimezoneGMT spring.datasource.nameroot spring.datasource.pass…...

【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用域)

目录 前言 九、再论函数 9.1 参数 9.1.1 参数的传递规则 9.1.2 指针作参数 9.1.3 数组作参数 9.1.4 结构体作参数 a. 直接用结构体变量作函数参数 b. 用指向结构体变量的指针作函数参数 9.2 函数值 9.2.1 返回指针值 9.2.2 返回结构体值 a. 返回结构体值 b. 返回…...

Spring WebClient 基于响应式编程模型的HTTP客户端

一、简介 WebClient是一个非阻塞的、可扩展的、基于Reactive Streams规范的HTTP客户端。它提供了一种简洁的方式来进行HTTP请求&#xff0c;并且可以很好地与其他Spring组件集成。WebClient支持同步和异步操作&#xff0c;使得它非常适合用于构建响应式应用程序。 WebClient允…...

IP真人识别方法与代理IP检测技术

随着互联网的发展&#xff0c;IP地址在网络安全和数据分析中扮演着重要的角色。为了维护网络的安全性和识别真实用户&#xff0c;IP地址的真实性和来源成为了一个关键问题。 什么是IP真人识别&#xff1f; IP真人识别是一种技术&#xff0c;旨在确定IP地址背后的用户是否为真实…...

MySQL 面试知识脑图 初高级知识点

脑图下载地址&#xff1a;https://mm.edrawsoft.cn/mobile-share/index.html?uuid18b10870122586-src&share_type1 sql_mode 基本语法及校验规则 ONLY_FULL_GROUP_BY 对于GROUP BY聚合操作&#xff0c;如果在SELECT中的列&#xff0c;没有在GROUP BY中出现&#xff…...

【数据结构】二叉树的链式结构及实现

目录 1. 前置说明 2. 二叉树的遍历 2.1 前序、中序以及后序遍历 2.2 层序遍历 3. 节点个数及高度等 4. 二叉树的创建和销毁 1. 前置说明 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。由于现在大家对二叉树结构…...

OpenCV4(C++)—— 创建窗口滑动条来调参

文章目录 创建滑动条 —— createTrackbar 创建滑动条 —— createTrackbar createTrackbar是OpenCV中的一个函数&#xff0c;用于创建一个可调节的滑动条&#xff08;Trackbar&#xff09;&#xff0c;以便在图像处理过程中实时调整参数 int cv::createTrackbar(const String…...

深度学习基础知识 学习率调度器的用法解析

深度学习基础知识 学习率调度器的用法解析 1、自定义学习率调度器**&#xff1a;**torch.optim.lr_scheduler.LambdaLR2、正儿八经的模型搭建流程以及学习率调度器的使用设置 1、自定义学习率调度器**&#xff1a;**torch.optim.lr_scheduler.LambdaLR 实验代码&#xff1a; i…...

【JUC系列-12】深入理解PriorityQueue的底层原理和基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…...

Paddle安装

Paddle安装参考 docs/tutorials/INSTALL_cn.md PaddlePaddle/PaddleDetection - Gitee.comhttps://gitee.com/paddlepaddle/PaddleDetection/blob/release/2.6/docs/tutorials/INSTALL_cn.md # 不指定版本安装paddle-gpu python -m pip install paddlepaddle-gpu# 测试安装 …...

配置XP虚拟机和Win 10宿主机互相ping通

文章目录 一、关闭虚机和宿主机的防火墙1、关闭虚拟机的防火墙1.1方式一1.2方式二 2、关闭宿主机的防火墙 二、设置XP和宿主机VMnet8的IP地址、网关和DNS1、获取VMWare的虚拟网络配置信息2、设置XP的VMnet8的IP地址、网关和DNS3、设置宿主机VMnet8的IP地址、网关和DNS 三、获取…...

【机器学习】sklearn对数据预处理

文章目录 数据处理步骤观察数据数据无量纲化缺失值处理处理分类型特征处理连续型特征 数据处理步骤 数据无量纲化缺失值处理处理分类型特征&#xff1a;编码与哑变量处理连续型特征&#xff1a;二值化与分段 观察数据 通过pandas读取数据&#xff0c;通过head和info方法大致查…...

【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层

关键词&#xff1a;智慧燃气、智慧燃气系统、智慧燃气平台、智慧燃气解决方案、智慧燃气应用、智能燃气 智慧燃气解决方案是基于物联网、大数据、云计算、移动互联网等先进技术&#xff0c;结合燃气行业特征&#xff0c;通过智能设备全面感知企业生产、环境、状态等信息的全方…...

Tomcat隔离web原理和热加载热部署

Tomcat 如何打破双亲委派机制 Tomcat 的自定义类加载器 WebAppClassLoader 打破了双亲委派机制&#xff0c;它首先自己尝试去加载某个类&#xff0c;如果找不到再代理给父类加载器&#xff0c;其目的是优先加载 Web 应用自己定义的类。具体实现就是重写 ClassLoader 的两个方法…...

使用ffmpeg和python脚本下载网络视频m3u8(全网最全面)

网上给娃找了些好看的电影和一些有趣的短视频&#xff0c;如何保存下来呢&#xff1f;从网上找各种工具&#xff1f;都不方便。于是想到何不编程搞定&#xff0c;搞个脚本。对程序员来说这都不是事儿。且我有华为云服务器&#xff0c;完全可以把地址记下&#xff0c;后台自动下…...

【考研408常用数据结构】C/C++实现代码汇总

文章目录 前言数组多维数组的原理、作用稀疏数组 链表单向链表的增删改查的具体实现思路约瑟夫环问题&#xff08;可不学&#xff09;双向链表 树二叉搜索树中序线索二叉树哈夫曼树的编码与译码红黑树B树B树 堆顺序与链式结构队列实现优先队列排序算法&#xff08;重点&#xf…...

Flink学习笔记(二):Flink内存模型

文章目录 1、配置总内存2、JobManager 内存模型3、TaskManager 内存模型4、WebUI 展示内存5、Flink On YARN 模式下内存分配6、Flink On Yarn 集群消耗资源估算6.1、资源分配6.2、Flink 提交 Yarn 集群的相关命令6.3、Flink On Yarn 集群的资源计算公式 1、配置总内存 Flink J…...

信息系统项目管理师第四版学习笔记——项目绩效域

干系人绩效域 干系人绩效域涉及与干系人相关的活动和职能。在项目整个生命周期过程中&#xff0c;有效执行本绩效域可以实现的预期目标主要包含&#xff1a;①与干系人建立高效的工作关系&#xff1b;②干系人认同项目目标&#xff1b;③支持项目的干系人提高了满意度&#xf…...

PyTorch 深度学习之加载数据集Dataset and DataLoader(七)

1. Revision: Manual data feed 全部Batch&#xff1a;计算速度&#xff0c;性能有问题 1 个 &#xff1a;跨越鞍点 mini-Batch:均衡速度与性能 2. Terminology: Epoch, Batch-Size, Iteration DataLoader: batch_size2, sheffleTrue 3. How to define your Dataset 两种处…...

CVPR 2025新秀OverLoCK上手实测:在COCO数据集上跑目标检测,比MogaNet-B高1% AP是怎么做到的?

OverLoCK实战指南&#xff1a;如何在COCO目标检测任务中超越MogaNet-B 1% AP 计算机视觉领域的主干网络架构正在经历一场静默革命。2025年CVPR最新收录的OverLoCK网络以其创新的"先概览再聚焦"设计理念&#xff0c;在多个视觉任务中展现出惊人的性能突破。本文将带您…...

3个步骤,让猫抓帮你轻松捕获网页视频资源

3个步骤&#xff0c;让猫抓帮你轻松捕获网页视频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况&#xff1f;在网…...

Qwen3.5-9B-AWQ-4bitWeb界面使用教程:上传/提问/防重复提交/结果解析全流程

Qwen3.5-9B-AWQ-4bit Web界面使用教程&#xff1a;上传/提问/防重复提交/结果解析全流程 1. 认识Qwen3.5-9B-AWQ-4bit模型 Qwen3.5-9B-AWQ-4bit是一个强大的多模态AI模型&#xff0c;它能够同时理解图片和文字。想象一下&#xff0c;你有一个既会看图片又会回答问题的智能助手…...

Qwen3-14B项目管理助手:需求文档生成、甘特图描述、风险点预判

Qwen3-14B项目管理助手&#xff1a;需求文档生成、甘特图描述、风险点预判 1. 项目管理的AI革命 项目管理是一项复杂的工作&#xff0c;涉及需求分析、进度规划、资源调配和风险控制等多个环节。传统方式下&#xff0c;项目经理需要花费大量时间编写文档、绘制甘特图和评估风…...

告别手动重复!用Python+ArcPy实现多要素批量裁剪年度影像的保姆级教程

PythonArcPy自动化遥感影像裁剪&#xff1a;从原理到实战的完整解决方案 遥感影像处理是GIS工程师的日常必修课。每当拿到新一年的土地利用数据或行政区划影像时&#xff0c;最头疼的莫过于要为每个行政单元单独裁剪每年的数据。我曾花费整整一周时间手动处理30个乡镇5年的NDVI…...

我已战胜一切!感谢哥白尼,感谢爱因斯坦,感谢豆包,,,曾经我都经历过什么,我自己非常清楚,既有爱因斯坦的压缩版,又有哥白尼的压缩版,,,

不是时代不好&#xff0c;是人心中的成见就像一座大山般&#xff0c;无法被逾越&#xff0c;只有暴雨降下&#xff0c;洗刷这个世界&#xff0c;重塑这个宇宙&#xff0c;各位其位&#xff0c;大道至简。历史的车轮早已不可阻挡&#xff0c;&#xff0c;&#xff0c;暴风雨会来…...

别再找插件了!手把手教你用uni-app的Canvas API画一个带渐变和刻度的环形进度条

原生Canvas魔法&#xff1a;在uni-app中打造高性能渐变环形进度条 每次看到那些酷炫的数据可视化图表&#xff0c;你是不是也想过自己动手实现&#xff1f;但面对复杂的第三方图表库文档和性能问题又望而却步。今天我要分享的是如何用uni-app原生Canvas API&#xff0c;从零开始…...

《跨摄像机目标追踪技术:构建连续身份与空间一致性的关键路径》——从“身份匹配”到“空间连续”的视频智能体系重构

《跨摄像机目标追踪技术&#xff1a;构建连续身份与空间一致性的关键路径》——从“身份匹配”到“空间连续”的视频智能体系重构发布单位&#xff1a;镜像视界&#xff08;浙江&#xff09;科技有限公司一、问题定义&#xff1a;什么叫“真正的跨摄像机追踪”&#xff1f;在多…...

增程式混合动力汽车MATLAB_simulink模型(串联)整车建模包括工况选择模型、驾驶员模型(PID控制)、整车工作模式控制模型、发动机模型、电机模型、电池模型、传动系统模型、整车动力学模型。

增程式混合动力汽车MATLAB/simulink模型&#xff08;串联&#xff09;整车建模包括工况选择模型、驾驶员模型&#xff08;PID控制&#xff09;、整车工作模式控制模型、发动机模型、电机模型、电池模型、传动系统模型、整车动力学模型。 此模型比较简单&#xff0c;当SOC低于SO…...

seo白帽优化会不会被搜索引擎识别和惩罚_网站使用seo白帽优化会有什么风险

SEO白帽优化会不会被搜索引擎识别和惩罚 在当今互联网时代&#xff0c;网站的流量和排名直接关系到企业的市场竞争力。作为提升网站排名的重要手段&#xff0c;SEO优化被广泛应用。其中&#xff0c;SEO白帽优化是最为推崇的一种方法。SEO白帽优化会不会被搜索引擎识别和惩罚呢…...