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

// 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’,

} ],

另外,有时候我们可能在树选择框中需要用来设置父级列表的处理,由于这个业务比较常见,而且逻辑相对比较通用,那么我们可以考虑把它封装为一个组件的方式,然后再在界面上使用。

在这里插入图片描述

界面使用效果如下所示:

在这里插入图片描述

这样勾选【作为顶级目录项】,那么则会自动置空内容,也就是父ID为空了,如果选择具体的树节点,那么就以该节点的ID作为PID,这样操作把调用界面处理的逻辑简化了,更方便使用。

这样我们可以在多处使用这个带有树列表展示,以及设置顶级节点的树列表框选择控件了,如在批量录入商品分类的操作界面中一样使用。

在这里插入图片描述

11、其他组件

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

组件不可能一一介绍完,一般情况下,我们依照我们的数据展示需要,引入不同的界面组件,一般可以在GitHub上找到很多对比,找适合自己的且评分较高的即可。

如条码和二维码组件,我使用 @chenfengyuan/vue-barcode和 @chenfengyuan/vue-qrcode,一般在Github上搜索下关键字,总能找到一些很受欢迎的第三方组件。

在这里插入图片描述

安装这些组件都有具体的说明,如下所示(如果卸载,直接修改install为uninstall即可)。

npm install @chenfengyuan/vue-barcode vue

以及:

npm install @chenfengyuan/vue-qrcode vue

条码和二维码的展示效果如下所示:

在这里插入图片描述

如果全局引入barcode和qrcode 组件,我们在main.js里面引入即可,如下代码所示:

// 引入barcode,qrcode

import VueBarcode from ‘@chenfengyuan/vue-barcode’;

import VueQrcode from ‘@chenfengyuan/vue-qrcode’;

Vue.component(VueBarcode.name, VueBarcode);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

img

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

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

核心竞争力,怎么才能提高呢?

成年人想要改变生活,逆转状态?那就开始学习吧~

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值