全部完整代码如下:
<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”
{{ node.label }}
</el-col
<el-table
v-loading=“loading”
:data=“konwledgeList”
@selection-change=“handleSelectionChange”
stripe
class=“tableBox”
height=“480”
:default-sort=“{ prop: ‘uploadTime’, order: ‘descending’ }”
<el-table-column
label=“序号”
align=“center”
type=“index”
width=“50”
/>
<el-table-column
label=“文件名称”
align=“center”
prop=“fileName”
width=“300”
{{ scope.row.fileName }}
<el-table-column
label=“上传时间”
align=“center”
prop=“uploadTime”
width=“130”
{{
parseTime(scope.row.uploadTime, “{y}年{m}月{d}日 {h}:{i}:{s}”)
}}
<el-table-column
label=“上传人”
align=“center”
prop=“uploadPerson”
width=“120”
/>
<el-table-column
label=“上一级文件夹”
align=“center”
prop=“parentName”
/>
<el-table-column
label=“操作”
align=“center”
class-name=“small-padding fixed-width”
<el-button size=“mini” type=“text” @click=“rename(scope.row)”
重命名</el-button
<el-button
size=“mini”
type=“text”
@click=“moveToOther(scope.row)”
移动</el-button
<el-button
size=“mini”
type=“text”
@click=“handleDelete(scope.row)”
删除</el-button
<pagination
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中添加如下代码
<span
<i
class=“el-icon-location”
style=“margin-right: 14px”
v-if=“data.id == 100 ? true : false”
<i
class=“el-icon-folder-opened”
style=“margin-right: 14px”
v-else-if=“data.children != null ? true : false”
<i
class=“el-icon-folder”
style=“margin-right: 14px”
v-else
</i
三、实现资源树修改功能
===========
1.实现思路
设计思路:
前端效果分成两种情况:A.文件资源树正常情况:label展示文件树节点名称;后面有编辑和删除的图标按钮
B.文件资源树编辑情况:input展示节点并实现可编辑输入效果;后面有确定和取消的图标按钮。
2.开发编辑情况时的前端效果
(1)实现文件资源树编辑情况
注释掉之前的span 文件资源树的正常情况,
<el-input
style=“width: 120px”
size=“mini”
<span
style=“margin-left: 20px”
<el-button
type=“text”
size=“mini”
@click=“() => sureChange(data)”
<i
class=“el-icon-circle-check”
style=“color: rgb(19, 206, 102)”
<el-button
type=“text”
size=“mini”
@click=“() => chancelChange(node, data)”
(2)添加input的输入绑定
但是我们会发现这时的input是无法输入的,需要使用:value绑定,而不是使用:model
并且添加input输入的事件,从而实现输入绑定
<el-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.实现编辑效果
(1)区分被选中编辑的节点
我们这一步需要结合两种情况,实现点击编辑按钮,对应的节点变成可编辑情况,但是未选中的节点不变
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的完整代码如下:
<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”
<span
<i
class=“el-icon-location”
style=“margin-right: 14px”
v-if=“data.id == 100 ? true : false”
<i
class=“el-icon-folder-opened”
style=“margin-right: 14px”
v-else-if=“data.children != null ? true : false”
<i
class=“el-icon-folder”
style=“margin-right: 14px”
v-else
</i
{{ node.label }}
<el-button
type=“text”
size=“mini”
@click=“() => editFile(data)”
<el-button
type=“text”
size=“mini”
@click=“() => remove(node, data)”
<el-input
style=“width: 120px”
size=“mini”
ref=“inputVal”
:value=“data.label”
@focus=“focus($event)”
@input=“(a) => inp(a, data)”
<span
style=“margin-left: 20px”
v-if=“data.id != 100 ? true : false”
<el-button
type=“text”
size=“mini”
@click=“() => sureChange(data)”
<i
class=“el-icon-circle-check”
style=“color: rgb(19, 206, 102)”
<el-button
type=“text”
size=“mini”
@click=“() => chancelChange(node, data)”
</el-tree
(2)实现编辑的确认
接口:
// 更新文件夹名称
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《前端校招面试真题精编解析》。