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

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

基于 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=1,size=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


最终的效果实现。

相关文章
|
JSON 测试技术 API
Apipost与Apifox测试功能对决,谁更适合开发者?
在API开发中,调试工具的选择至关重要。本文对比了国产工具Apipost与Apifox的功能差异,涵盖调试能力、环境管理、团队协作、文档生成、自动化测试等方面。Apifox在细节处理、协作支持及生态集成上表现更优,适合复杂项目与团队开发;而Apipost则适合基础调试需求。通过全面评估,开发者可依据项目特点选择合适工具,提升开发效率与质量。
Apipost与Apifox测试功能对决,谁更适合开发者?
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
存储 人工智能 测试技术
用AI提升测试效率:智能体平台的「需求文档管理」功能上线啦!
霍格沃兹测试开发学社推出AI智能体测试平台,全新「需求文档管理」功能助力高效测试准备。集中管理需求文档,支持多种上传方式,智能生成测试用例,提升测试效率与准确性,助力迈向智能化测试新时代。
|
人工智能 自然语言处理 前端开发
深度解析Playwright MCP:功能、优势与挑战,AI如何提升测试效率与覆盖率
Playwright MCP通过AI与浏览器交互,实现自然语言驱动的自动化测试。它降低门槛、提升效率,助力测试工程师聚焦高价值工作,是探索性测试与快速验证的新利器。
|
测试技术
自动化测试登录后的功能
在自动化测试的时候,往往许多功能需要登录以后才可以进行操作的,在这里我介绍一种方法,在登录以后将Cookies信息存入本地文件,在测试登录以后操作的时候再从本地文件把信息调出来存入Cookies
255 4
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
718 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
1548 56
|
弹性计算 运维 Java
OS-Copilot参数功能全面测试报告
作为一名运维工程师,我主要负责云资源的运维和管理。通过使用OS Copilot的-t/-f/管道功能,我顺利解决了环境快速搭建的问题,例如Tomcat的快速部署。具体步骤包括购买ECS服务器、配置安全组、远程登录并安装OS Copilot。使用-f参数成功安装并启动Tomcat,自动配置JDK,并通过|管道功能验证了生成内容的正确性。整个过程非常流畅,极大提升了工作效率。
308 12
|
监控 测试技术
slb测试会话保持功能
slb测试会话保持功能
602 6

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1442
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    716
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    575
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    581
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    667
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    847
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1659
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    399
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1373
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    681