循序渐进VUE+Element 前端应用开发(26)--- 各种界面组件的使用(2)(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

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

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

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

{“id”:4,“parent”:0,“addr”:“重庆”},

{“id”:31,“parent”:3,“addr”:“重庆”},

{“id”:32,“parent”:3,“addr”:“重庆”}

];

而树控件使用的data 则是嵌套数据,我们如果每次使用都需要为它们专门做一个函数有点多余,我们可以用前端转换的方式来实现树数据的转换。

具体操作可以参考:https://blog.csdn.net/unamattin/article/details/77152451

//二维列表转树形控件所需嵌套数据格式

export function getJsonTree(data, config) {

const id = config.id || ‘id’; const pid = config.pid || ‘pid’;

const children = config.children || ‘children’;

const label = config.label || ‘name’;// 默认label为name字段

const idMap = []; const jsonTree = [];

data.forEach(function(v) {

idMap[v[id]] = v;

});

data.forEach(function(v) {

const parent = idMap[v[pid]];

if (parent) {

!parent[children] && (parent[children] = []);

parent[children].push(v);

} else {

jsonTree.push(v);

}

});

// treeAddIcon(jsonTree, label);// 循环遍历给tree加图标

return jsonTree;

}

这样树列表的绑定操作如下代码所示。

getTree() { // 树列表数据获取

var param = {

SkipCount: 0,

MaxResultCount: 1000

}

category.GetAll(param).then(data => {

this.treedata = [];// 树列表清空

var list = data.result.items

if (list) {

// console.log(list)

// 使用getJsonTree函数,实现对二维表转换为嵌套树对象集合

var newTreedata = getJsonTree(list, {

id: ‘id’,

pid: ‘pid’,

children: ‘children’,

label: ‘categoryName’

});

// console.log(newTreedata)

this.treedata = newTreedata

}

});

},

顺便说一下,由于引入一些原始控件需要实现很多相应的操作,一般情况下,我们可以把树控件常规的处理封装成一个组件的方式使用,其中包括了常规的过滤、选中等操作处理。如下是我们简单封装的树控件的自定义组件,用于处理常规的树列表信息。

在这里插入图片描述

这样使用起来,界面代码减少很多,只需要实现对应的事件即可。

<myTree :data=“treedata” :default-expand-all=“false” icon-class=“el-icon-price-tag” @nodeClick=“nodeClick” />

另外,更高维度上,我们还可以把业务界面按模块分离出来,实现不同的界面的组装,这样可以减轻代码的臃肿程度,提高代码可读性。

如之前说过的机构信息,页面逻辑比较多,可以简化为各个不同的模块,然后拼装组件即可。

在这里插入图片描述

例如:对于权限系统中的每个角色,除了包含基本信息外,还会包含拥有的权限(功能控制点)、包含用户,以及拥有的菜单,其中权限是用来控制界面元素,如操作按钮的显示的,而拥有的菜单,则是用户以指定账号登录系统后,获得对应角色的菜单,然后构建对应的访问入口的。角色界面模块UML类图如下所示。

那么对应界面元素上,我们就应该以不同的Tab来展示这些信息,每个Tab内容部分就可以作为一个独立的界面组件来开发。

在这里插入图片描述

在这里插入图片描述

8、按钮及按钮组

====================================================================

按钮比较常用,一般我们依照常规的方式使用,并设置样式即可。

在这里插入图片描述

代码如下所示:

默认按钮

主要按钮

成功按钮

信息按钮

警告按钮

危险按钮

朴素按钮

主要按钮

成功按钮

信息按钮

警告按钮

危险按钮

圆角按钮

主要按钮

成功按钮

信息按钮

警告按钮

危险按钮

我在之前的界面中采用的按钮样式如下所示。

在这里插入图片描述

后来我觉得把按钮组合起来更好看,也更节省空间。

在这里插入图片描述

这里其实就是使用了按钮组的作用。

<el-button icon=“el-icon-search” type=“primary” size=“mini” round @click=“search()”>查询

<el-button icon=“el-icon-refresh-left” type=“warning” size=“mini” round plain @click=“resetSeachForm(‘searchForm’)”>重置

<el-button icon=“el-icon-plus” type=“success” size=“mini” round @click=“showAdd()”>添加

<el-button icon=“el-icon-document-remove” type=“danger” size=“mini” round :disabled=“listSelection.length === 0” @click=“batchDelete()”>批量删除

<el-button icon=“el-icon-upload2” type=“warning” size=“mini” round @click=“showImport()”>导入

<el-button icon=“el-icon-download” :loading=“downloadLoading” type=“primary” size=“mini” round @click=“handleDownload()”>导出

9、表格控件的使用

=====================================================================

表格控件是我们展示数据库二维表内容的重要承载,一般在主列表页面中展示表格数据。

在这里插入图片描述

表格控件的使用也比较简单,简单案例的代码所示。

<el-table

:data=“tableData”

border

style=“width: 100%”>

<el-table-column

prop=“date”

label=“日期”

width=“180”>

<el-table-column

prop=“name”

label=“姓名”

width=“180”>

<el-table-column

prop=“address”

label=“地址”>

但往往我们处理表格列的各种内容承载的时候,需要丰富很多,如包括标签、Switch开关,按钮操作、日期格式化、内容转换等操作。

在这里插入图片描述

如标签列,可以进行循环处理。

<el-tag

v-for=“tag in scope.row.tags.split(‘,’)”

:key=“tag”

type=“primary”

{{ tag }}

或者结合过滤器进行处理。

{{ scope.row.state | stateFilter }}

日期,我们也用日期过滤器实现转换。

表格的操作列,整个对单个记录操作的各种操作入口。

<el-button icon=“el-icon-search” type=“success” circle size=“mini” @click=“showView(scope.row.id)” />

<el-button icon=“el-icon-edit” type=“primary” circle size=“mini” @click=“showEdit(scope.row.id)” />

<el-button icon=“el-icon-delete” type=“danger” circle size=“mini” @click=“showDelete(scope.row.id)” />

如果是开关操作,我们也可以结合一起展示和操作处理。

在这里插入图片描述

操作代码如下所示:

{{ scope.row.status==0 ? ‘正常’ : ‘停用’ }}

<el-switch

v-model=“scope.row.status”

:active-value=“0”

:inactive-value=“1”

@change=“changeStatus(scope.$index, scope.row)”

/>

另外表格数据,一般还涉及到Excel的导出操作,这个其实是采用了SheetJS的处理方式草操作XLSX的方式导出Excel的,这里引用了前人开发的Export2Excel 组件进行处理。

handleDownload() { // 导出Excel文件

this.downloadLoading = true

import(‘@/vendor/Export2Excel’).then(excel => {

const tHeader = [‘父ID’, ‘分类编码’, ‘分类名称’, ‘分类描述’, ‘分类图片封面’, ‘分类图标’, ‘排序’, ‘状态’]

const filterVal = [‘pid’, ‘categoryCode’, ‘categoryName’, ‘note’, ‘pictureUrl’, ‘icon’, ‘sortCode’, ‘status’]

const list = this.list

const data = this.formatJson(filterVal, list)

excel.export_json_to_excel({

header: tHeader,

data,

filename: ‘商品分类’,

autoWidth: true,

bookType: ‘xlsx’

})

this.downloadLoading = false

})

},

formatJson(filterVal, jsonData) {

return jsonData.map(v => filterVal.map(j => {

if (j === ‘creationTime’) {

return this.parseTime(v[j], ‘{y}-{m}-{d} {h}:{i}:{s}’)

} else {

return v[j]

}

}))

},

一般来说,Element的表格控件已经具有非常丰富的功能了,包括固定行列、展开行、懒加载数据、多级表头、排序筛选、自定义列、合计行列等操作,

如果有需要直接编辑表格数据的操作,建议可以采用第三方表格组件来实现:https://github.com/huangshuwei/vue-easytable

在这里插入图片描述

10、树形下拉列表框及封装

=========================================================================

除了常规的树列表展示内容外,我们也需要一个在下拉列表中展示树内容的界面组件。

这里又得引入一个第三方的界面组件,因此Element的Select组件不支持树列表。

GitHub地址:https://github.com/riophae/vue-treeselect

官网地址:https://vue-treeselect.js.org/

常规的界面代码如下使用:

复杂一点的使用界面代码,可以指定更多的属性设置,以及处理事件操作。

<treeselect

v-model=“value”

:options=“treedata”

:multiple=“true”

:flat=“true”

:default-expand-level=“Infinity”

:open-on-click=“true”

:open-on-focus=“true”

clearable

:max-height=“200”

/>

这里的options就是树控件的数据,是一个嵌套结构的列表对象:

options: [ {

id: ‘a’,

label: ‘a’,

children: [ {

id: ‘aa’,

label: ‘aa’,

最后

面试一面会问很多基础问题,而这些基础问题基本上在网上搜索,面试题都会很多很多。最好把准备一下常见的面试问题,毕竟面试也相当与一次考试,所以找工作面试的准备千万别偷懒。面试就跟考试一样的,时间长了不复习,现场表现肯定不会太好。表现的不好面试官不可能说,我猜他没发挥好,我录用他吧。

96道前端面试题:

常用算法面试题:

前端基础面试题:
内容主要包括HTML,CSS,JavaScript,浏览器,性能优化

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
t=“200”

/>

这里的options就是树控件的数据,是一个嵌套结构的列表对象:

options: [ {

id: ‘a’,

label: ‘a’,

children: [ {

id: ‘aa’,

label: ‘aa’,

最后

面试一面会问很多基础问题,而这些基础问题基本上在网上搜索,面试题都会很多很多。最好把准备一下常见的面试问题,毕竟面试也相当与一次考试,所以找工作面试的准备千万别偷懒。面试就跟考试一样的,时间长了不复习,现场表现肯定不会太好。表现的不好面试官不可能说,我猜他没发挥好,我录用他吧。

96道前端面试题:

  • [外链图片转存中…(img-06waQf6a-1713587855869)]

常用算法面试题:

  • [外链图片转存中…(img-miZLMoLg-1713587855869)]

前端基础面试题:
内容主要包括HTML,CSS,JavaScript,浏览器,性能优化

  • [外链图片转存中…(img-eZ0oHzLr-1713587855869)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-1Kllte53-1713587855870)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值