uni-app:实现点击按钮,进行数据累加展示(解决数据过多,导致出错)

效果

代码

核心代码

一、标签显示

<!-- 加载更多 -->
<view class="load_more" v-if="info.length >= pageNum * pageSize" @tap="loadMore">
        加载更多
</view>
  • v-if="info.length >= pageNum * pageSize":这是一个条件渲染的指令,当满足条件时才会渲染该元素。条件是判断当前已加载的元素数量是否达到了当前页码乘以每页的元素数量。
  • @tap="loadMore":这是一个点击事件绑定的指令,当用户点击该元素时,会触发loadMore方法。

 二、变量设置

data() {
	return {
		search: getApp().globalData.icon + 'index/search.png',
		add: getApp().globalData.icon + 'index/index/add.png',
		info: [],
		pageNum: 1,//默认初始页码
		pageSize: 3,//一页显示的条数
		like_trans_num:'',//模糊查询的单号
	}
},

 定义变量pageNum默认初始页码;pageSize一页显示的条数

三、加载更多

loadMore() {
	this.pageNum++;
	this.requestData();
},

点击加载更多按钮,执行内容: 页码数+1,再次执行获取数据的函数

四、获取数据

requestData() {
	uni.request({
		url: getApp().globalData.position + 'Warehouse/select_inhouse',
		data: {
			page: this.pageNum,
			pageSize: this.pageSize,
			like_trans_num:this.like_trans_num
		},
		header: {
			"Content-Type": "application/x-www-form-urlencoded"
		},
		method: 'POST',
		dataType: 'json',
		success: res => {
			if (res.data.info.length > 0) {
				this.info = this.info.concat(res.data.info);
			} else {
				// 没有更多数据
				// 可以在界面上显示相应提示
			}
		},
		fail(res) {
			console.log("查询失败") 
		}
	});
}
  •  将页码、每次查询数量、模糊查询数据传入后端作为条件,获取数据库中数据
  • if (res.data.info.length > 0) {this.info = this.info.concat(res.data.info);}:判断是满足本页长度是否大于0,如果大于0,进行数据的拼接

五、后端

$page = input('post.page', 1);//获取前端传来的页码数,如果不存在默认为1
$pageSize = input('post.pageSize', 10);//获取前端传来的每页数量,如果不存在默认为10
$start = ($page - 1) * $pageSize; // 查询起始位置
->limit($start,$pageSize)//查询数据库时,作为查询条件

全部代码

前端

<template>
	<view>
		<!--新增-->
		<image class='img' :src="add" @tap='add_inhouse'></image>
		<!-- 搜索框 -->
		<view class="top">
			<view class="search">
				<view class="search_in">
					<image :src="search"></image>
					<input type="text" placeholder="请输入工单信息" placeholder-style="color:#CCCCCC"
						@confirm="search_inhouse" />
				</view>
			</view>
		</view>
		<!-- 主干内容 -->
		<view class="item_info" v-for="(item, index) in info" :key="index">
			<view class="all_content" :data-id="item.trans_num" @tap="detail_inhouse">
				<view class="all_position">
					<!-- 第一行 -->
					<view class="line1">
						<!-- 单号 -->
						<view class="line1_left">
							{{item.trans_num}}
						</view>
						<view class="line1_right">
							{{item.created_by}}
						</view>
					</view>
					<view class="line2">
						<!-- 供应商名称 -->
						<view class="line2_item">
							交易类型:{{item.transaction_type}}
						</view>
						<view class="line2_item">
							仓库名称:{{item.subinventory_from}}
						</view>
						<view class="line2_item">	
							创建时间:{{item.creation_date}}
						</view>
					</view>
				</view>
			</view>
		</view>

		<!-- 加载更多 -->
		<view class="load_more" v-if="info.length >= pageNum * pageSize" @tap="loadMore">
			加载更多
		</view>

	</view>
</template>

<script>
	export default {
		data() {
			return {
				search: getApp().globalData.icon + 'index/search.png',
				add: getApp().globalData.icon + 'index/index/add.png',
				info: [],
				pageNum: 1,//默认初始页码
				pageSize: 3,//一页显示的条数
				like_trans_num:'',//模糊查询的单号
			}
		},
		methods: {
			//查询杂项入库的详情页
			detail_inhouse(e){
				// console.log(e.currentTarget.dataset.id)
				var trans_num = e.currentTarget.dataset.id
				uni.navigateTo({
					url: '../detail_inhouse/detail_inhouse?trans_num='+trans_num,
				})
			},
			//新增采购入库
			add_inhouse(){
				uni.navigateTo({
					url: '../add_inhouse/add_inhouse',
				})
			},
			loadMore() {
				this.pageNum++;
				this.requestData();
			},
			//模糊查询
			search_inhouse(e){
				this.info=[];
				this.pageNum= 1;
				this.pageSize=3;
				// console.log(e.target.value);
				this.like_trans_num = e.target.value;
				this.requestData();
			},
			requestData() {
				uni.request({
					url: getApp().globalData.position + 'Warehouse/select_inhouse',
					data: {
						page: this.pageNum,
						pageSize: this.pageSize,
						like_trans_num:this.like_trans_num
					},
					header: {
						"Content-Type": "application/x-www-form-urlencoded"
					},
					method: 'POST',
					dataType: 'json',
					success: res => {
						// console.log(res.data.info)
						// console.log(res.data.all_count)
						if (res.data.info.length > 0) {
							this.info = this.info.concat(res.data.info);
						} else {
							// 没有更多数据
							// 可以在界面上显示相应提示
						}
					},
					fail(res) {
						console.log("查询失败") 
					}
				});
			}
		},
		onLoad() {
			this.requestData();
		}
	}
</script>

<style>
	/* 主体内容 */
	.all_content {
		margin-top: 25rpx;
		/* border: 1px solid black; */
		width: 100%;
		background-color: #ffffff;
		display: flex;
		justify-content: center;
	}

	.all_position {
		width: 92%;
		/* border: 1px solid red; */
	}

	.line1 {
		display: flex;
		width: 100%;
		padding: 20rpx 0;
		border-bottom: 4rpx solid #e5e5e5;
	}

	.line1_left {
		width: 50%;
	}

	.line1_right {
		width: 50%;
		text-align: right;
	}

	.line2 {
		/* border: 1px solid red; */
		padding: 20rpx 0 20rpx 0;
	}

	.line2_item {
		/* border: 1px solid red; */
		padding: 10rpx 0;
	}

	/* 背景色 */
	page {
		background-color: #F0F4F7; 
	}

	/* 悬浮按钮 */
	.img {
		float: right;
		position: fixed;
		bottom: 6%;
		right: 2%;
		width: 100rpx;
		height: 100rpx;
	}

	/* 搜索框 */
	.search {
		display: flex;
		align-items: center;
		justify-content: center;
		background-color: #ffffff;
		/* border:1px solid black; */
		width: 100%;
		height: 100rpx;
	}

	.search .search_in {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0 20rpx;
		box-sizing: border-box;
		height: 70rpx;
		width: 90%;
		background-color: #F0F4F7;
		border-radius: 10rpx;
		/* border:1px solid black; */
	}

	.search_in image {
		height: 40rpx;
		width: 45rpx;
		margin-right: 20rpx;
	}

	.search input {
		width: 100%;
	}

	/* 加载更多 */
	.load_more {
		text-align: center;
		padding: 20rpx 0;
		color: #999999;
		font-size: 28rpx;
	}
</style>

后端

   public function select_inhouse() {
        $page = input('post.page', 1);
        $pageSize = input('post.pageSize', 10);
        $like_trans_num = input('post.like_trans_num', '');
        $start = ($page - 1) * $pageSize; // 查询起始位置
        $subQuery = db::table('inv_transactions_all')
            ->field('trans_num, subinventory_from, transaction_type, creation_date')
            ->where('trans_num', 'like', 'ZR%')
            ->where([
                'trans_num'=>['like', '%' . $like_trans_num . '%'],
                ])
            ->order('creation_date DESC')
            ->group('trans_num, subinventory_from, transaction_type, creation_date')
            ->limit($start,$pageSize)
            ->buildSql();
        $data['info'] = db::table([$subQuery => 't'])
            ->select();
        // 格式化时间
        foreach ($data['info'] as &$item) {
            $item['creation_date'] = date('Y-m-d H:i:s', $item['creation_date']);
        }
        // 格式化时间
        echo json_encode($data);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/67141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

远景智能PMO负责人严晓婷受邀为第十二届中国PMO大会演讲嘉宾

上海远景科创智能科技有限公司PMO负责人严晓婷女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;能源物联网产品标准项目和非标准项目的并行管理。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1…

教雅川学缠论07-中枢实战众泰汽车000980

本文实战众泰汽车 下面是2023年11月14-2023年8月8众泰汽车日K图 先画日K 接下来处理包含&#xff0c;就变成下面这个样子 下面在套上缠论的理论&#xff0c;未来股价的走势应该是红色椭圆形虚线里面的样子 好了&#xff0c;文章就到这里&#xff0c;如果众泰最终不是这个走势…

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

网页版Java&#xff08;Spring/Spring Boot/Spring MVC&#xff09;五子棋项目&#xff08;四&#xff09;对战模块 一、约定前后端交互接口1. 建立连接接口2. 针对落子的请求和响应 二、实现前端页面三、实现后端1. 当用户进入房间&#xff0c;更新用户状态 OnlineUserManager…

W5500-EVB-PICO作为TCP Client 进行数据回环测试(五)

前言 上一章我们用W5500-EVB-PICO开发板通过DNS解析www.baidu.com&#xff08;百度域名&#xff09;成功得到其IP地址&#xff0c;那么本章我们将用我们的开发板作为客户端去连接服务器&#xff0c;并做数据回环测试&#xff1a;收到服务器发送的数据&#xff0c;并回传给服务器…

FFmpeg 编码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力&#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API&#xff0c;将avcodec_encode_audio2(…

IO模型-信号驱动IO

linux内核中存在一个信号SIGIO&#xff0c;这个信号就是用于实现信号驱动IO的。当应用程序中想要以信号驱动IO的模型读写硬件数据时&#xff0c;首先注册一个SIGIO信号的信号处理函数,当硬件数据就绪&#xff0c;硬件会发起一个中断&#xff0c;在硬件的中断处理函数中向当前进…

css-4:元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

1、背景 在开发中&#xff0c;经常遇到这个问题&#xff0c;即让某个元素的内容在水平和垂直方向上都居中&#xff0c;内容不仅限于文字&#xff0c;可能是图片或其他元素。 居中是一个非常基础但又是非常重要的应用场景&#xff0c;实现居中的方法存在很多&#xff0c;可以将这…

解决 Android Studio 的 Gradle 面板上只有关于测试的 task 的问题

文章目录 问题描述解决办法 笔者出问题时的运行环境&#xff1a; Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17 问题描述 笔者最近发现一个奇怪的事情。笔者的 Android Studio 的 Gradle 面板上居然除了用于测试的 task 之外&#xff0c;其它什…

centos8.5本地yum源报错

在下载文件出现以下错误 [rootserver ~]# yum install gcc Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use subscription-manager to register. RHEL8.5-BaseOS …

【对于一维信号的匹配】对一个一维(时间)信号y使用自定义基B执行匹配追踪(MP)研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

冠达管理:大跳水!美国又要下黑手!3300亿巨头突然死亡,疯抢锂矿

美国又要下“黑手”。 据环球网征引路透社音讯&#xff0c;美国政府高级官员泄漏&#xff0c;白宫当地时间9日将具体阐明约束美国在华出资灵敏技能的方案&#xff0c;并要求将其他有关出资奉告政府。 美股商场上演了一场大败局。当地时间8月9日美股盘中&#xff0c;全球同享工…

如何给Linux开启swap虚拟内存

查看系统内存资源 free -h 创建swap分区 dd if/dev/zero of/swapfile bs1024 count4194304dev/zero&#xff1a;是Linux的一种特殊字符设备(输入设备)&#xff0c;可以用来创建一个指定长度用于初始化的空文件&#xff0c;如临时交换文件&#xff0c;该设备无穷尽地提供0&…

Linux下C/C++的gdb工具与Python的pdb工具常见用法之对比

1、gdb和pdb分别是什么&#xff1f; 1.1、gdb GDB&#xff08;GNU Debugger&#xff09;是一个功能强大的命令行调试工具&#xff0c;由GNU项目开发&#xff0c;用于调试C、C等编程语言的程序。它在多个操作系统中都可以使用&#xff0c;包括Linux、MacOS和Windows&#xff0…

大数据Flink(五十八):Flink on Yarn的三种部署方式介绍

文章目录 Flink on Yarn的三种部署方式介绍 一、​​​​​​​Session模式

ChatGLM2-6B在windows下的部署

2023-08-10 ChatGLM2-6B在windows下的部署 一、部署环境 1、Windows 10 专业版&#xff0c; 64位&#xff0c;版本号&#xff1a;22H2&#xff0c;内存&#xff1a;32GB 2、已安装CUDA11.3 3、已安装Anaconda3 64bit版本 4、有显卡NVIDIA GeForce RTX 3060 Laptop GPU …

【Git】Git切换地址

如何切换git代码地址&#xff1f; 1、查看当前远程 url git remote -v执行命令后&#xff0c;可以看见当前有2个URL。 远程 URL 在一般情况下有两个&#xff0c;分别是 fetch 和 push。 fetch URL 是用于从远程仓库获取最新版本的数据。当您运行 git fetch 命令时&#xf…

【EI/SCOPUS检索】第三届新媒体发展与现代化教育国际学术会议(NMDME 2023)

第三届新媒体发展与现代化教育国际学术会议&#xff08;NMDME 2023&#xff09; The 3rd International Conference on New Media Development and Modernized Education 第三届新媒体发展与现代化教育国际学术会议(NMDME 2023)将于2023年10月13-15日于西安召开。会议旨在为新…

免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务 bbc

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端…

进入现代云技术的世界-APIGateway、ServiceMesh、OpenStack、异步化框架、云原生框架、命令式API与声明式API

目录 APIGateway Service Mesh OpenStack 异步化框架 云原生框架 命令式API与声明式API APIGateway API网关&#xff08;API Gateway&#xff09;是一个服务器——充当了客户端和内部服务之间的中间层。API网关负责处理API请求&#xff0c;将客户端的请求路由到相应的后端…

JVM垃圾回收篇-垃圾回收算法

JVM垃圾回收篇-垃圾回收算法 标记清除&#xff08;Mark Sweep&#xff09; 概念 collector指的就是垃圾收集器。 mutator是指除了垃圾收集器之外的部分&#xff0c;比如说我们的应用程序本身。 mutator的职责一般是NEW(分配内存)、READ(从内存中读取内容)、WRITE(将内容写入内…