uniapp 条件筛选

news2025/5/31 21:53:31

v3 版本

<template>
	<view class="store flex ">

		<view class="store_view">
			<view class="store_view_search flex jsb ac">
				<!-- <view class="store_view_search_select">
					全部
				</view> -->
				<view class="store_view_search_inp flex ac">
					<input type="text" placeholder="请输入搜索商品" v-model="Data.search_t" @confirm="confirm" />
				</view>
			</view>


			<view class="screening flex jsb ac">
				<view class="screening_li flex jc ac" @click="choose_filter(1,'weigh')">
					<view class="screening_li_t" :class="Data.filter_index==1?'screening_li_tc':''">
						综合
					</view>
					<!-- <view class="screening_li_img">
						<up-icon name="arrow-down" color="#333" size="12" @confirm="confirm"></up-icon>
					</view> -->
				</view>
				<view class="screening_li flex jc ac" @click="choose_filter(2,'sales')">
					<view class="screening_li_t" :class="Data.filter_index==2?'screening_li_tc':''">
						销量
					</view>
					<!-- asc=正序  最小的在前面,最大的在后面    desc=倒序  最大的在前面,最小的在最后 -->
					<view class="screening_li_img">
						<!-- -fill -->
						<up-icon name="arrow-up-fill" color="#8E97FE " size="8"
							v-if="Data.filter_index==2&&Data.filter_type=='asc'"></up-icon>
						<up-icon name="arrow-up-fill" color="#333 " size="8" v-else></up-icon>
						<up-icon name="arrow-down-fill" color="#8E97FE" size="8"
							v-if="Data.filter_index==2&&Data.filter_type=='desc'"></up-icon>
						<up-icon name="arrow-down-fill" color="#333" size="8" v-else></up-icon>
					</view>
				</view>
				<view class="screening_li  flex jc ac" @click="choose_filter(3,'price')">
					<view class="screening_li_t" :class="Data.filter_index==3?'screening_li_tc':''">
						价格
					</view>
					<view class="screening_li_img">
						<up-icon name="arrow-up-fill" color="#8E97FE " size="8"
							v-if="Data.filter_index==3&&Data.filter_type=='asc'"></up-icon>
						<up-icon name="arrow-up-fill" color="#333 " size="8" v-else></up-icon>
						<up-icon name="arrow-down-fill" color="#8E97FE" size="8"
							v-if="Data.filter_index==3&&Data.filter_type=='desc'"></up-icon>
						<up-icon name="arrow-down-fill" color="#333" size="8" v-else></up-icon>
					</view>
				</view>
				<view class="screening_li  flex jc ac" @click="choose_filter(5,'createtime')">
					<view class="screening_li_t" :class="Data.filter_index==5?'screening_li_tc':''">
						新上架
					</view>
					<!-- <view class="screening_li_img">
						<up-icon name="arrow-up-fill" color="#8E97FE " size="8"
							v-if="Data.filter_index==3&&Data.filter_type=='asc'"></up-icon>
						<up-icon name="arrow-up-fill" color="#333 " size="8" v-else></up-icon>
						<up-icon name="arrow-down-fill" color="#8E97FE" size="8"
							v-if="Data.filter_index==3&&Data.filter_type=='desc'"></up-icon>
						<up-icon name="arrow-down-fill" color="#333" size="8" v-else></up-icon>
					</view> -->
				</view>
				<!-- <view class="screening_li flex jc ac" @click="choose_filter(4,'')">
					<view class="screening_li_t" :class="Data.filter_index==4?'screening_li_tc':''">
						筛选
					</view>
					<view class="screening_li_img flex jc ac">
						<image class="limg" :src="Data.imgurl + 'sxc.png'" mode="" v-if="Data.filter_index==4"></image>
						<image class="limg" :src="Data.imgurl + 'sx.png'" mode="" v-else></image>
					</view>
				</view> -->
			</view>

		</view>


		<scroll-view scroll-y="true" class="scrollview flex " @scrolltolower="onReachBottoms">

			<view class="scrollview_list" v-if="Data.list.length&&!Data.list_loading_show">
				<goodsItem :list="Data.list" :type="19"></goodsItem>
			</view>
			<Loading :type="'adaptive'" :show="Data.list_loading_show"></Loading>
			<view v-if="Data.list.length==0&&!Data.list_loading_show">
				<nodata></nodata>
			</view>
		</scroll-view>



		<Loading :show="Data.loading_show"></Loading>
	</view>
</template>

<script setup>
	import Loading from "@/components/loading/loading.vue"
	import tabbar from "@/components/tabbar/tabbar.vue"
	import goodsItem from "@/components/goodsItem/goodsItem.vue"
	import nodata from "@/components/nodata/nodata.vue"
	import tools from "@/tools/index.js"
	import config from "@/tools/config.js"
	import customizeHead from "@/components/customizeHead/customizeHead.vue"
	import {
		reactive,
		computed
	} from 'vue';
	import {
		onLoad,
		onPageScroll,
		onPullDownRefresh,
		onShow,
		onReachBottom,
		onUnload,
		onHide,
		onShareAppMessage
	} from '@dcloudio/uni-app';
	const wxinfo = computed(() => tools.$public.public.wxCapsuleInfo())
	// 数据
	const Data = reactive({
		imgurl: config.serverimg,
		loading_show: true,
		list_loading_show: false,
		id: '',
		list: [],
		search_t: '',
		filter_index: 1, //筛选选中第几个
		filter_type: 'asc',
		filter_sort: 'weigh',
	})

	setTimeout(() => {
		Data.loading_show = false;
	}, 500)

	const Page = reactive({
		page: 1,
		limit: 10,
		last_page: 0
	})

	function onReachBottoms() {
		console.log('到底了')
		if (Page.last_page > Page.page) {
			Page.page++;
			getlist(1);
		} else {
			tools.$public.public.showToast('没有更多了~')
		}
	}

	onLoad((opt) => {
		// if (Data.search_t) {
		// 	getlist()
		// }
	})


	onShow(() => {
		// tools.$store('user').setuToExamine()
	})

	async function getlist(type) {
		let {
			code,
			msg,
			data
		} = await tools.$api.indexs.searchProduct({
			page: Page.page,
			search: Data.search_t,
			sort: Data.filter_sort,
			order: Data.filter_type,
			filter: {},
			op: {},
			type: 'goods'
		})
		if (code == 1) {
			if (type) {
				if (data.data && data.data.length) {
					Data.list.push(...data.data)
				}
			} else {
				
					Data.list = data.data;
				
			}
			Page.last_page = data.last_page;
			console.log(data, '商品列表')
		}

		setTimeout(() => {
			Data.list_loading_show = false;
		}, 500)

	}



	function choose_filter(index, sort) {
		// if(){

		// }
		Data.filter_sort = sort;
		if (Data.filter_index == index) {
			filter_type_choose()
		} else {
			Data.filter_index = index;
			Data.filter_type = ''
			filter_type_choose()
		}
		// if (Data.filter_index == 2 && Data.filter_type != 'asc' && Data.filter_type != 'desc')

	}

	function filter_type_choose() {
		if (Data.filter_index == 2) {
			if (Data.filter_index == 2 && Data.filter_type == 'asc') {
				Data.filter_type = 'desc'
			} else if (Data.filter_index == 2 && Data.filter_type == 'desc') {
				Data.filter_type = 'asc'
			} else {
				Data.filter_type = 'asc'
			}
		} else if (Data.filter_index == 3) {
			if (Data.filter_index == 3 && Data.filter_type == 'asc') {
				Data.filter_type = 'desc'

			} else if (Data.filter_index == 3 && Data.filter_type == 'desc') {
				Data.filter_type = 'asc'
			} else {
				Data.filter_type = 'asc'
			}
		} else if (Data.filter_index == 5) {
			Data.filter_type = 'desc'
		}
		if (statePage()) {
			getlist()
		}



	}

	function statePage() {
		Data.list = [];
		Page.page = 1;
		Page.limit = 10;
		Page.last_page = 0;
		Data.list_loading_show = true;
		return true;
	}

	function confirm(e) {
		if (e.detail.value) {
			Data.search_t = e.detail.value;
			if (statePage()) {
				getlist()
			}
			
		} else {
			Data.list = [];
			Page.page = 1;
			Page.limit = 10;
			Page.last_page = 0;
		}
		// console.log(e, '搜压缩')

	}


	const go = (page) => {
		tools.$public.public.navigateTo(page)
	}

	const islogin = () => {
		if (!uni.getStorageSync('token')) {
			// tools.$public.public.goLogin()
			return false
		} else {
			return true;
		}
	}
</script>
<style>
	page {
		background: #fff;
	}
</style>
<style lang="scss" scoped>
	.screening_li_tc {
		// font-size: 32rpx !important;
		color: #8E97FE !important;

		margin-right: 5rpx !important;

		line-height: 1;
	}

	.store {
		height: 100vh;
		position: relative;
		flex-direction: column;
		// justify-content: space-between;

		.backimg {
			width: 100%;
			height: 590rpx;
			position: fixed;
			top: 0;
			left: 0;
			z-index: -1;
		}

		.store_view {
			width: 100%;
			margin-top: 12rpx;
			// position: fixed;

			.store_view_search {
				// width: 690rpx;
				margin: auto;
				padding: 24rpx 20rpx;
				box-sizing: border-box;

				.store_view_search_select {
					font-weight: bold;
					font-size: 24rpx;
					color: #333333;
				}

				.store_view_search_inp {
					// width: 508rpx;
					width: 100%;
					height: 56rpx;
					background: rgba(239, 239, 239, 0.6);
					border-radius: 110rpx 110rpx 110rpx 110rpx;
					padding: 0 30rpx;
					box-sizing: border-box;
					font-weight: 400;
					font-size: 24rpx;
					color: #AAAAAA;

					input {
						width: 100%;
					}
				}
			}

			.screening {
				// width: 100%;
				width: 690rpx;
				margin: auto;
				padding: 24rpx 20rpx;
				box-sizing: border-box;

				.screening_li {
					// width: 33.3%;
				}

				.screening_li_t {
					font-size: 32rpx;
					color: #777777;
					margin-right: 5rpx;
				}

				.screening_li_img {}
			}


		}

		.store_view_plank {
			width: 100%;
			height: 96px;
		}

		.scrollview {
			overflow: hidden;
			flex-grow: 1 flex;
			padding-top: 24rpx;
			box-sizing: border-box;

			.scrollview_list {
				width: 690rpx;
				margin: auto;
			}

		}
	}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch问题汇总

conda环境下 通过torch官网首页 pip安装 成功运行 后面通过conda安装了别的包 似乎因为什么版本问题 就不能用了 packages\torch_init_.py", line 245, in _load_dll_libraries raise err OSError: [WinError 127] 找不到指定的程序。 Error loading ackages\torch\lib\c…

开发过的一个Coding项目

一、文档资料、人员培训&#xff1a; 1、文档资料管理&#xff1a;这个可以使用OnLineHelpDesk。 2、人员培训&#xff1a;可以参考Is an Online Medical Billing and Coding Program Right for You - MedicalBillingandCoding.org。 3、人员招聘、考核&#xff1a;可以在Onli…

数据仓库维度建模详细过程

数据仓库的维度建模&#xff08;Dimensional Modeling&#xff09;是一种以业务用户理解为核心的设计方法&#xff0c;通过维度表和事实表组织数据&#xff0c;支持高效查询和分析。其核心目标是简化复杂业务逻辑&#xff0c;提升查询性能。以下是维度建模的详细过程&#xff1…

python打卡day37

早停策略和模型权重保存 知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 是否过拟合&#xff0c;可以通过同步打印训练集和测试集的loss曲线…

各个网络协议的依赖关系

网络协议的依赖关系 学习网络协议之间的依赖关系具有多方面重要作用&#xff0c;具体如下&#xff1a; 帮助理解网络工作原理 - 整体流程明晰&#xff1a;网络协议分层且相互依赖&#xff0c;如TCP/IP协议族&#xff0c;应用层协议依赖传输层的TCP或UDP协议来传输数据&#…

OSC协议简介、工作原理、特点、数据的接收和发送

OSC协议简介 Open Sound Control&#xff08;OSC&#xff09; 是一种开放的、独立于传输的基于消息的协议&#xff0c;主要用于计算机、声音合成器和其他多媒体设备之间的通信。它提供了一种灵活且高效的方式来发送和接收参数化消息&#xff0c;特别适用于实时控制应用&#x…

区块链可投会议CCF C--APSEC 2025 截止7.13 附录用率

Conference&#xff1a;32nd Asia-Pacific Software Engineering Conference (APSEC 2025) CCF level&#xff1a;CCF C Categories&#xff1a;软件工程/系统软件/程序设计语言 Year&#xff1a;2025 Conference time&#xff1a;December 2-5, 2025 in Macao SAR, China …

【数字图像处理】_笔记

第一章 概述 1.1 什么是数字图像&#xff1f; 图像分为两大类&#xff1a;模拟图像与数字图像 模拟图像&#xff1a;通过某种物理&#xff08;光、电&#xff09;的强弱变化来记录图像上各个点的亮度信息 连续&#xff1a;从空间上和数值上是不间断的 举例&…

从0开始学习R语言--Day10--时间序列分析数据

在数据分析中&#xff0c;我们经常会看到带有时间属性的数据&#xff0c;比如股价波动&#xff0c;各种商品销售数据&#xff0c;网站的网络用户活跃度等。一般来说&#xff0c;根据需求我们会分为两种&#xff0c;分析历史数据的特点和预测未来时间段的数据。 移动平均 移动平…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的产品驱动型增长策略研究

摘要&#xff1a;在数字化经济时代&#xff0c;产品驱动型增长&#xff08;Product-Led Growth, PLG&#xff09;已成为企业突破流量瓶颈、实现用户裂变的核心战略。本文以“开源链动21模式AI智能名片S2B2C商城小程序”&#xff08;以下简称“链动AI-S2B2C系统”&#xff09;为…

使用 OpenCV 实现“随机镜面墙”——多镜片密铺的哈哈镜效果

1. 引言 “哈哈镜”是一种典型的图像变形效果&#xff0c;通过局部镜面反射产生扭曲的视觉趣味。在计算机视觉和图像处理领域&#xff0c;这类效果不仅有趣&#xff0c;还能用于艺术创作、交互装置、视觉特效等场景。 传统的“哈哈镜”往往是针对整张图像做某种镜像或扭曲变换…

鸿蒙仓颉开发语言实战教程:页面跳转和传参

前两天分别实现了商城应用的首页和商品详情页面&#xff0c;今天要分享新的内容&#xff0c;就是这两个页面之间的相互跳转和传递参数。 首先我们需要两个页面。如果你的项目中还没有第二个页面&#xff0c;可以右键cangjie文件夹新建仓颉文件&#xff1a; 新建的文件里面没什…

最新Spring Security实战教程(十六)微服务间安全通信 - JWT令牌传递与校验机制

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

【五】Spring Cloud微服务开发:解决版本冲突全攻略

Spring Cloud微服务开发&#xff1a;解决版本冲突全攻略 目录 Spring Cloud微服务开发&#xff1a;解决版本冲突全攻略 概述 一、Spring Boot 二、Spring Cloud 三、Spring Cloud Alibaba 总结 概述 spring cloud微服务项目开发过程中经常遇到程序包版本冲突的问题&…

Spring Boot微服务架构(二):开发调试常见中文问题

Spring Boot开发调试常见中文问题及解决方案 一、环境配置类问题 端口冲突 表现&#xff1a;启动时报错"Address already in use"解决&#xff1a;修改application.properties中的server.port或终止占用端口的进程 数据库连接失败 表现&#xff1a;启动时报错"…

Linux基础IO----动态库与静态库

什么是库&#xff1f; 库是由一些.o文件打包在一起而形成的可执行程序的半成品。 如何理解这句话呢&#xff1f; 首先&#xff0c;一个程序在运行前需要进行预处理、编译、汇编、链接这几步。 预处理&#xff1a; 完成头文件展开、去注释、宏替换、条件编译等&#xff0c;最终…

LeetCode百题刷004(哈希表优化两数和问题)

遇到的问题都有解决的方案&#xff0c;希望我的博客可以为你提供一些帮助 一、哈希策略优化两数和问题 题目地址&#xff1a;1. 两数之和 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/two-sum/description/ 思路分析&#xff1a; 题目要求在一个整型…

FPGA通信之VGA与HDMI

文章目录 VGA基本概念&#xff1a;水平扫描&#xff1a;垂直扫描&#xff1a; 时序如下&#xff1a;端口设计疑问为什么需要输出那么多端口不输出时钟怎么保证电子枪移动速度符合时序VGA转HDMI 仿真电路图代码总结&#xff1a;VGA看野火电子教程 HDMITMDS传输原理为什么使用TMD…

Leetcode百题斩-二叉树

二叉树作为经典面试系列&#xff0c;那么当然要来看看。总计14道题&#xff0c;包含大量的简单题&#xff0c;说明这确实是个比较基础的专题。快速过快速过。 先构造一个二叉树数据结构。 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode…

ACM Latex模板:合并添加作者和单位

目录&#xff1a; 1.ACM会议论文Latex模板&#xff0c;逐个添加作者和单位&#xff1a; 1&#xff09;Latex&#xff1a; 2&#xff09;效果&#xff1a; 2. ACM会议论文Latex模板&#xff0c;合并添加作者和单位&#xff1a; 1&#xff09;Latex&#xff1a; 2&#x…