首页 > 其他分享 >根据获取集合指定位置以及特定数量的元素做虚拟分页

根据获取集合指定位置以及特定数量的元素做虚拟分页

时间:2022-11-15 17:45:00浏览次数:51  
标签:分页 pageSize List value vo rspData 虚拟 result 集合

后端java代码

@ApiOperation(value = "待办任务", notes = "待办任务")
    @GetMapping("/todoTask/list")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "module", value = "模块名称"),
            @ApiImplicitParam(name = "taskName", value = "标题"),
            @ApiImplicitParam(name = "pageNum", value = "当前记录起始页"),
            @ApiImplicitParam(name = "pageSize", value = "每页显示条数")
    })
    public TableDataInfo getTodoItems(@RequestParam(value = "module", required = false) String module,
                                      @RequestParam(value = "taskName", required = false) String taskName) {
        /**第一步:pageNum和pageSize是从前端数据里传进来的分页对象的属性**/
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        String userName = SecurityUtils.getUsername();
        List<TodoTaskDTO> result = new ArrayList<TodoTaskDTO>();
        /**第二步:过滤数据**/
        TodoTaskDTO vo = new TodoTaskDTO();
        vo.setTitle(taskName);
        vo.setType(module);
        vo.setAssignee(userName);
        /**第三步:拼接list集合**/
        List<TodoTaskDTO> safeTaskList = taskCenterService.getSafeHiddenTodoItem(vo);
        List<TodoTaskDTO> riskTaskList = taskCenterService.getRiskTodoItem(vo);
        List<TodoTaskDTO> accTaskList = taskCenterService.getAccTodoItem(vo);
        List<TodoTaskDTO> accReportTaskList = taskCenterService.getAccReportTodoItem(vo);
        List<TodoTaskDTO> emergencyTaskList = taskCenterService.getEmergencyTodoItem(vo);
        result.addAll(safeTaskList);
        result.addAll(riskTaskList);
        result.addAll(accTaskList);
        result.addAll(accReportTaskList);
        result.addAll(emergencyTaskList);
        /**第四步:获取处理好的list集合**/
        int num = result.size();
        result = result.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(0);
        rspData.setRows(result);
        rspData.setTotal(num);
        return rspData;
    }

前端vue代码

<!--  分页 -->
<pagination
      v-show="isShowPagination"
      :total="totalCount"
      :page.sync="requestParams.pageNum"
      :limit.sync="requestParams.pageSize"
      @pagination="getRecordListFromServe"
/>

computed:{
      // 是否显示分页
      isShowPagination() {
        if (this.totalCount > 10) {
          return true;
        } else {
          return false;
        }
      },
    },

mounted() {
   // 从服务端获取记录列表
   this.getRecordListFromServe()
},

methods: {
      // 从服务端获取项目列表
      async getRecordListFromServe() {
        this.isLoading = true;
        const result = await getRecordListApi(this.taskId,this.requestParams);
        // 格式化记录数据
        this.formattingRecordData(result.data)
      },
      // 格式化记录数据
      formattingRecordData(recordData) {
        let { headers, tableData,total } = recordData
        // 总的记录列表
        this.allRecordList = tableData
        this.totalCount = total;
        this.isLoading = false;
        // 记录列表
        const showRecordList = []
        // 删除照片/视频
        //headers.splice(2, 1)
        // 遍历表格数据
        tableData.forEach((recordItem) => {
          //recordItem.splice(2, 1)
          const colItem = {}
          recordItem.forEach((item, index) => {
            colItem[`col${index}`] = item
          })
          showRecordList.push(colItem)
        })
        // 赋值
        this.recordHeaders = headers
        this.showRecordList = showRecordList
      },
}

小结: 简单的数据类型的分页或者量小的数据可以使用,但是复杂的数据类型分页不推荐这种,随着数据的增多,效率会变得比较慢

标签:分页,pageSize,List,value,vo,rspData,虚拟,result,集合
From: https://www.cnblogs.com/zhaodefu/p/16893241.html

相关文章

  • 分页工具类
    packagecom.cars.ict.common.utils;importcom.baomidou.mybatisplus.core.metadata.IPage;importjava.io.Serializable;importjava.util.List;/***分页工具类**@a......
  • 直播带货新趋势:虚拟数字人主播或将成为直播领域的标配产品
    这几年直播行业风生水起,特别是直播带货,已经成为了电商卖货的新趋势,每个人都想成为下一个李佳琦。随着电商行业的快速增长,出现了一个新的概念,虚拟数字人主播,生动的形态和有......
  • os::虚拟内存
    概念虚拟内存是程序,或者多个程序执行,内存没有这么大,但是却能执行,就是用到虚拟技术每个程序都有自己的空间,将空间分成多块每一块称为一页或者一个页面,然后通过分页技术映......
  • 瀑布流使用虚拟列表性能优化
    瀑布流算是比较常见的布局了,一个般常见纵向瀑布流的交互,当我们滚动到底的时候加载下一页的数据追加到上去。因为一次加载的数据量不是很多,页面操作是也不会有太大的性能消......
  • ElasticSearch深度分页详解
    1前言ElasticSearch是一个实时的分布式搜索与分析引擎,常用于大量非结构化数据的存储和快速检索场景,具有很强的扩展性。纵使其有诸多优点,在搜索领域远超关系型数据库,但依......
  • Linux——虚拟机如何连接XShell
    目录一、检查虚拟机设置的网络连接是否为NAT模式二、虚拟网络编辑器中查看IP地址三、设置虚拟机的IP地址,子网掩码,网关,DNS四、XSell中连接虚拟机五、总结一、检查虚拟......
  • Mysql-分页查询
    --从0开始查询,查询3条数据;SELECT*fromstuLIMIT0,3;--每页显示3条数据,查询第1页的数据;SELECT*fromstuLIMIT0,3;--每页显示3条数据,查询第2页的数据;SELECT......
  • 【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
    5virtio的半硬件卸载方案        Virtio作为一种半虚拟化的解决方案,其性能一直不如设备的pass-through,即将物理设备(通常是网卡的VF)直接分配给虚拟机,其优点在......
  • 【重识云原生】第四章云网络4.7.6节——virtio-blk存储虚拟化方案
    1 virtio-blk存储虚拟化方案1.1 virtio-blk简介        基于virtio的virtio-blk是KVM-Qemu虚拟化生态中的虚拟化块存储的一种实现方式,利用了virtio共享内......
  • javaSE基础-集合
    集合集合中类的关系图数组与集合1、数组与集合数据存储简述集合、数组都是对多个数据进行存储操作的结构,简称java容器说明:此时的存储,主要指的是内存层面的存储,不涉及......