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

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

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


最终的效果实现。

相关文章
|
人工智能 前端开发 测试技术
如何让AI帮你做前端自动化测试?我们这样落地了
本文介绍了一个基于AI的UI自动化测试框架在专有云质量保障中的工程化实践。
5087 24
如何让AI帮你做前端自动化测试?我们这样落地了
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
901 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
712 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
4573 64
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1227 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
715 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
1895 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
1421 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
1056 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
1207 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡

热门文章

最新文章

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