全部完整代码如下:
:data=“fileOptions” :props=“defaultProps” :expand-on-click-node=“false” :filter-node-method=“filterNode” ref=“tree” node-key=“id” default-expand-all highlight-current @node-click=“handleNodeClick” {{ node.label }}
v-loading=“loading” :data=“konwledgeList” @selection-change=“handleSelectionChange” stripe class=“tableBox” height=“480” :default-sort=“{ prop: ‘uploadTime’, order: ‘descending’ }” label=“序号” align=“center” type=“index” width=“50” /> label=“文件名称” align=“center” prop=“fileName” width=“300” {{ scope.row.fileName }} label=“上传时间” align=“center” prop=“uploadTime” width=“130” {{ parseTime(scope.row.uploadTime, “{y}年{m}月{d}日 {h}:{i}:{s}”) }} label=“上传人” align=“center” prop=“uploadPerson” width=“120” /> label=“上一级文件夹” align=“center” prop=“parentName” /> label=“操作” align=“center” class-name=“small-padding fixed-width” 重命名 size=“mini” type=“text” @click=“moveToOther(scope.row)” 移动 size=“mini” type=“text” @click=“handleDelete(scope.row)” 删除 v-show=“total > 0” :total=“total” :page.sync=“queryParams.pageNum” :limit.sync=“queryParams.pageSize” @pagination=“getList” layout=“total, prev, pager, next” /> 至此的效果如下: 2.添加文件前的文件夹图标 分析:A.最外部的全部前面有一个定位图标;全部的id=100 B.如果文件夹节点是包含子节点的,那么就是文件夹图标; C.如果资源是叶子节点,那么就是文件图标。 只需要在el-tree的span中添加如下代码
class=“el-icon-location” style=“margin-right: 14px” v-if=“data.id == 100 ? true : false”
class=“el-icon-folder-opened” style=“margin-right: 14px” v-else-if=“data.children != null ? true : false”
class=“el-icon-folder” style=“margin-right: 14px” v-else
三、实现资源树修改功能 =========== 1.实现思路 设计思路: 前端效果分成两种情况:A.文件资源树正常情况:label展示文件树节点名称;后面有编辑和删除的图标按钮 B.文件资源树编辑情况:input展示节点并实现可编辑输入效果;后面有确定和取消的图标按钮。 2.开发编辑情况时的前端效果 注释掉之前的span 文件资源树的正常情况, style=“width: 120px” size=“mini”
style=“margin-left: 20px” type=“text” size=“mini” @click=“() => sureChange(data)”
class=“el-icon-circle-check” style=“color: rgb(19, 206, 102)” type=“text” size=“mini” @click=“() => chancelChange(node, data)”
但是我们会发现这时的input是无法输入的,需要使用:value绑定,而不是使用:model 并且添加input输入的事件,从而实现输入绑定 style=“width: 120px” size=“mini” ref=“inputVal” :value=“data.label” @focus=“focus($event)” @input=“(a) => inp(a, data)” focus(event) {}, inp(value, data) { data.label = value; }, 至此,我们实现了这样的效果,可以在input中修改 3.实现编辑效果 我们这一步需要结合两种情况,实现点击编辑按钮,对应的节点变成可编辑情况,但是未选中的节点不变 A. 如何区分哪个节点是选中的呢?? 方法:记录点击选中的节点的id,对于每个节点data.id都与此记录的临时operationVis做对比即可。 B. 在何处记录这个选中的节点?? 在点击编辑按钮事件editFile时,记录选中节点 this.operationVis = data.id; // 编辑按钮 editFile(data) { this.operationVis = data.id; }, C. 如何区分一般情况和可编辑情况? 在点击编辑时添加标记data.id != operationVis,并在取消或者确认修改之后 this.operationVis = “”; … … el-tree的完整代码如下: :data=“fileOptions” :props=“defaultProps” :expand-on-click-node=“false” :filter-node-method=“filterNode” ref=“tree” node-key=“id” default-expand-all highlight-current @node-click=“handleNodeClick”
class=“el-icon-location” style=“margin-right: 14px” v-if=“data.id == 100 ? true : false”
class=“el-icon-folder-opened” style=“margin-right: 14px” v-else-if=“data.children != null ? true : false”
class=“el-icon-folder” style=“margin-right: 14px” v-else
{{ node.label }} type=“text” size=“mini” @click=“() => editFile(data)”
type=“text” size=“mini” @click=“() => remove(node, data)”
style=“width: 120px” size=“mini” ref=“inputVal” :value=“data.label” @focus=“focus($event)” @input=“(a) => inp(a, data)”
style=“margin-left: 20px” v-if=“data.id != 100 ? true : false” type=“text” size=“mini” @click=“() => sureChange(data)”
class=“el-icon-circle-check” style=“color: rgb(19, 206, 102)” type=“text” size=“mini” @click=“() => chancelChange(node, data)”
接口: // 更新文件夹名称 export function updateKonwledgeFile(data) { return request({ url: “/knowledge/file”, method: “put”, data: data }); } 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化! 由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新 如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端) 1.webpack打包文件体积过大?(最终打包为一个js文件) 2.如何优化webpack构建的性能 3.移动端的性能优化 4.Vue的SPA 如何优化加载速度 5.移动端300ms延迟 6.页面的重构 所有的知识点都有详细的解答,我整理成了280页PDF《前端校招面试真题精编解析》。 CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】 真正体系化!** 由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新 如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端) [外链图片转存中…(img-Qf3jgTBu-1711807961297)] 1.webpack打包文件体积过大?(最终打包为一个js文件) 2.如何优化webpack构建的性能 3.移动端的性能优化 4.Vue的SPA 如何优化加载速度 5.移动端300ms延迟 6.页面的重构 所有的知识点都有详细的解答,我整理成了280页PDF《前端校招面试真题精编解析》。 CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
(1)实现文件资源树编辑情况
(2)添加input的输入绑定
(1)区分被选中编辑的节点
(2)实现编辑的确认
性能优化
性能优化
还没有评论,来说两句吧...