【Vue入门实践1】可编辑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”

{{ 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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

性能优化

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开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值