【测试开花】四、项目管理-前端-实现项目列表、分页功能

简介: 【测试开花】四、项目管理-前端-实现项目列表、分页功能

基于 springboot+vue 的测试平台开发继续更新。


今天来完成项目列表的前端部分。


一、前后端调通


开发前端页面,框架里有 2 个地方需要改动:


  • src/views: 这里是开发页面的地方,也就是 vue 文件,可以按功能模块新建子目录来进行分类。
  • src/api: vue 页面里请求的后端接口的js文件统一都写在这里。


接下来,针对项目列表接口localhost:8080/bloomtest/project/list/1/5,来改动这两处的代码。


1. 请求后端接口


src/api下,我新增一个js文件projectManagement.js,存放项目管理页面中需要交互的后端请求。


import request from '@/utils/request'
export function getList(current, size, data) {
  return request({
    url: `/bloomtest/project/list/${current}/${size}`,
    method: 'post',
    data: data
  })
}


这里需要注意的是,我这个接口请求既有路径上的参数,也有请求body的参数:


  • 接收路径参数:使用****符号来标记 url,然后在其中使用${}`引用变量。
  • 接收请求body:直接使用 data 来接收即可。


2. 项目列表页面


src/views新建一个目录projectManagement,在目录下直接 copy 框架原有 table 目录下的index.vue文件,重命名为table.vue


接着在src/views/projectManagement/table.vue中修改代码,调通接口。


这里先修改导入的方法:import { getList } from

'@/api/projectManagement'


1268169-20210917230713328-279296079.png


然后修改 methods 里的fetchData()方法,导入的 getList 方法就在这里被调用。


1268169-20210917230828637-10038512.png


这里又有 2 个改动点:


  • 方法传参。


在上述定义的方法里,需要有 3 个传参getList(current, size, data)。这里用到的参数,都定义在return里:

1268169-20210917231130297-1206749455.png



这里都给了默认值:projectName 为空current=1size=10


  • 获取返回结果里的 list 。


原代码里response.data.items,这里的items就是mock数据返回的 list。而我们实际接口返回list的字段叫records


1268169-20210917231407727-1202719735.png


所以最终的代码改为:


methods: {
    fetchData() {
      this.listLoading = true;
      getList(this.currentPage, this.size, this.projectQuery).then(response => {
        this.list = response.data.records;
        this.listLoading = false
      })
    }
  }


打开 F12 ,刷新项目列表页看下前后端是否调通。


1268169-20210917231748561-1543226322.png


前后已通。


3. 调整接口返回的时间格式问题


我在请求列表接口后,看到返回的时间格式不对劲。


1268169-20210917232350918-1075003606.png


这里需要转化一下格式,在对应的实体类的时间字段上添加:


@JsonFormat(timezone = "GMT+8",pattern="yyyy-MM-dd HH:mm:ss")


1268169-20210917232530925-52658861.png


重新请求下:


1268169-20210917232555202-843956812.png


格式正常了。


二、实现列表数据显示


1. 使用element UI组件库


原有的页面代码不能满足我的项目列表需求,所以要换掉这里的代码。


打开element UI组件库,在table下寻找要用的组件。


1268169-20210918121843411-2117943839.png


点击下方的【显示代码】,复制标签<template></template>,替换src/views/projectManagement/table.vue中的 template 代码。


1268169-20210918122136975-1704700980.png


页面已经可以看到新效果了。


2. 修改复制来的代码


1268169-20210918122136975-1704700980.png


(1)列表的属性


首先修改:data="list",这是数据绑定,列表里就是要list里的数据,因为从后端接口里拿到的数据存放在了list里。


1268169-20210918124410033-684332776.png


另外还可以添加一些属性,比如加载loading效果、当前选中行高亮的等等。


1268169-20210918123727628-298903270.png


这些属性在对应组件页面的最下面都可以看到,可以根据自己的需要,添加对应的属性。


1268169-20210918123922868-1087261870.png


(2)修改表字段


<el-table-column>标签里的属性是作用于列的,比如:


1268169-20210918124116781-2143065961.png


  • prop:填写后端返回字段的名称
  • label:显示的名字
  • width:宽度
  • align:居中显示


这里的属性就不一一列举了,搜索就可以查到。


还有这个表是可以固定列的,直接拷贝的代码进行了列的固定,通过fixed属性,这里我们不需要使用,先去掉。


1268169-20210918124709651-533581462.png


按照这个改完之后,列表的显示就有了。


1268169-20210918124801570-1211642282.png


三、实现分页


1.使用 组件


同样是去 element UI寻找组件,然后 copy 代码修改,就使用这个吧。


1268169-20210919102949741-283653611.png


把这段拷过来,修改代码,最终是这样:


<el-pagination
      layout="total, prev, pager, next"
      :page-size="size"
      :current-page.sync="currentPage"
      :total="total"
      @current-change="fetchData"
    />


介绍下分页组件:


  • layout:表示需要显示的内容,用逗号分隔,布局元素会依次显示。prev 表示上一页,next 为下一页,pager 表示页码列表,除此以外还提供了jumper跳页和 total 总数。
  • page-size: 每页显示条目个数,支持.sync修饰符。
  • current-page: 当前页数,支持.sync修饰符。
  • total: 总条目数。
  • current-change: 事件,currentPage改变时会触发。这里就是点击当前页的时候,会调用fetchData方法查询列表。


2. 给分页相关字段赋值


组件里使用:绑定到对应的字段上,这些字段需要后端接口返回之后给它们赋值。


1268169-20210919105744312-1775546105.png


因为接口请求路径参数里必须有值,所以写了2个默认的。


然后修改接口返回的代码,赋值:


1268169-20210919105921453-1698610133.png


3. 关于 .sync 修饰符


上面提到的.sync修饰符,简单来说是实现父子组件间值的传递。


这里的current-page我在父组件和子组件里都要用到:


  • 子组件:被导入的组件。这里就是import { getList } from '@/api/projectManagement'中的getList
  • 父组件:就是引入该封装的组件的文件叫做父组件,也就是这里的src/views/projectManagement/table.vue文件。


在子组件中,当接口返回的时候需要赋值给current-page;而当我点击第2页(值改变)的时候还要发起新的请求/bloomtest/project/list/2/10,所以需要使用.sync 修饰符


可以在fetchData方法里打印一下current-page绑定的值,输出到console中,看下两者的不同:


1268169-20210919111007276-1241294734.png


(1)使用 .sync 修饰符


打开F12,刷新一下列表,再点击一下分页的第 2 页,查看 console:


1268169-20210919111129312-1526807646.png


值改变了。


(2)不使用 .sync 修饰符


打开F12,刷新一下列表,再点击一下分页的第 2 页,查看 console:


1268169-20210919111240225-43873035.png


父组件、子组件之间的值没有传递回去。


1268169-20210919111359848-1009659001.png


最终的效果实现。

相关文章
|
3天前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
2月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
4天前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
228 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
1月前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
50 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
40 1
|
2月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
42 4
|
2月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
37 1
|
2月前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:

热门文章

最新文章