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

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

基于 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


最终的效果实现。

相关文章
|
8天前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
26天前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
105 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
15天前
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
47 4
|
15天前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
34 4
|
13天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
15天前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
28 2
|
18天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
35 2
|
19天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
28 2
|
27天前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
1月前
|
前端开发 JavaScript 开发工具
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
34 0