剩下的就是对Vue + Element前端的界面处理事情了。
我们先来看看查询的处理,常规的查询涉及日期区间的查询处理,这里我们用一个一个查询日期的处理操作,如下图所示。
表单的界面代码如下所示 :
<el-date-picker
v-model=“searchForm.creationTime”
type=“daterange”
align=“right”
unlink-panels
range-separator=“至”
start-placeholder=“开始日期”
end-placeholder=“结束日期”
:picker-options=“pickerOptions”
/>
其中定义了一个pickerOptions 属性,用于快速选择日期的,在data里面增加一个这样的属性即可。
pickerOptions: {
shortcuts: [{
text: ‘最近一周’,
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit(‘pick’, [start, end]);
}
}, {
text: ‘最近一个月’,
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit(‘pick’, [start, end]);
}
}, {
text: ‘最近三个月’,
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit(‘pick’, [start, end]);
}
}]
},
在页面里面,我们定义了一些分页查询的处理条件和对象,如下所示。
查询表单则定义一个单独的表单对象,如下代码所示:
searchForm: { // 查询表单
UserName: ‘’,
PhoneNumber: ‘’,
creationTime: ‘’
},
页面加载准备好,我们就调用获取列表的数据即可。
created() { // 页面加载后,加载列表数据
this.getlist()
},
获取列表的处理操作如下代码所示,主要就是准备构建好对应的查询参数,然后调用UserApi类的接口查询列表即可。
getlist() { // 列表数据获取
var CreationTimeStart = ‘’
if (this.searchForm.creationTime && this.searchForm.creationTime.length > 0) {
CreationTimeStart = this.parseTime(this.searchForm.creationTime[0], ‘{y}-{m}-{d}’)
}
var CreationTimeEnd = ‘’
if (this.searchForm.creationTime && this.searchForm.creationTime.length > 1) {
CreationTimeEnd = this.parseTime(this.searchForm.creationTime[1], ‘{y}-{m}-{d}’)
}
var param = { // 构造常规的分页查询条件
SkipCount: (this.pageinfo.pageindex - 1) * this.pageinfo.pagesize,
MaxResultCount: this.pageinfo.pagesize,
// 过滤条件
UserName: this.searchForm.UserName,
PhoneNumber: this.searchForm.PhoneNumber,
CreationTimeStart: CreationTimeStart,
CreationTimeEnd: CreationTimeEnd
};
// 获取列表,绑定到模型上,并修改分页数量
this.listLoading = true
user.GetAll(param).then(data => {
this.list = data.result.items
this.pageinfo.total = data.result.totalCount
this.listLoading = false
})
},
search() { // 查询列表处理
this.pageinfo.pageindex = 1;// 重置为第一页=
this.getlist()
},
通过列表的查询操作,我们就可以把数据获取到,界面就会得到及时的更新显示了:
// 获取列表,绑定到模型上,并修改分页数量
this.listLoading = true
user.GetAll(param).then(data => {
this.list = data.result.items
this.pageinfo.total = data.result.totalCount
this.listLoading = false
})
而列表主要就是在界面使用el-table组件进行展示的了,如下图所示代码。
el-table绑定了对应的数据,并设置好显示的格式以及选择操作事件、行双击事件等操作。
而el-table里面的显示的列,需要根据我们返回数据的属性名称进行显示,如下代码所示。
而如果我们需要对属性进行特殊的展示,我们就需要使用v-if条件或者过滤器进行处理了。如下是根据不同内容,构建标签显示内容。
已激活
未激活
而对于时间,我们则可以使用格式化函数或者过滤器规范显示的格式内容。
其中 :formatter=“dateFormat” 指定了对应的格式化处理函数。
dateFormat(row, column, cellValue) {
// this.parseTime是在main.js中的全局挂载函数
return cellValue ? this.parseTime(cellValue, ‘{y}-{m}-{d}’) : ‘’ // 完整格式:{y}-{m}-{d} {h}-{i}-{s}
},
timeFormat(row, column, cellValue) {
// this.parseTime是在main.js中的全局挂载函数
return cellValue ? this.parseTime(cellValue, ‘{y}-{m}-{d} {h}:{i}:{s}’) : ‘’ // 完整格式:{y}-{m}-{d} {h}-{i}-{s}
}
另外,操作列的代码,主要就是构建一些方法操作的入口,并传递对应的变量,如ID值即可。
<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)” />
<el-button icon=“el-icon-setting” type=“warning” circle size=“mini” @click=“showSetPass(scope.row.id)” />
列表的底部分页处理,也是利用对应的属性进行显示即可,并处理分页变化的事件。
<el-pagination
:current-page=“pageinfo.pageindex”
:page-size=“pageinfo.pagesize”
:total=“pageinfo.total”
:page-sizes=“[10,20,30,40]”
layout=“total, sizes, prev, pager, next”
@size-change=“sizeChange”
@current-change=“currentChange”
/>
最后完成列表界面代码,显示列表界面如下所示。
而对于查看、编辑、新增等对话框,一般我们需要创建对应的表单属性,用来承载对应的信息的,如我们为了查看信息的需要,创建一个viewForm的对象,如下所示。
viewForm: { // 查看表单
id: ‘’,
userName: ‘’,
surname: ‘’,
name: ‘’,
emailAddress: ‘’,
phoneNumber: ‘’,
ouNames: ‘’
},
在查看信息对话框里面,我们展示对应的用户信息,包括基础信息和相关的关系,如下界面代码所示。
界面组件通过v-modal进行绑定对应的ViewForm属性对象即可。
最后,我们在触发showView函数里面,获取对应的用户信息,然后展示在界面上即可,showView函数代码如下所示。
showView(id) { // 显示查看对话框处理
var param = { id: id }
user.Get(param).then(data => {
// console.log(data.result)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
总结一下这三次面试下来我的经验是:
-
一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!
-
代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!
-
尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!
-
多刷面经!
我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】免费获取。祝大家早日拿到自己心怡的工作!
篇幅有限,仅展示部分内容
理解原理,否则面试官一深入就会露馅!
-
代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!
-
尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!
-
多刷面经!
我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】免费获取。祝大家早日拿到自己心怡的工作!
篇幅有限,仅展示部分内容