当前位置: 首页 > article >正文

uniapp-商城-62-后台 商品列表(分类展示商品的布局)

        每一个商品都有类别,比如水果,蔬菜,肉,粮油等等,另外每一个商品都有自己的属性,这些都在前面的章节进行了大量篇幅的介绍。这里我们终于完成了商品类的添加,商品的添加,现在到了该进行商品列表的展示。 

        本文介绍了商品列表展示的实现过程。首先,通过界面设计,点击商品列表时,商品的基本信息会显示在右侧界面。页面布局代码包括新增商品按钮和商品展示部分,新增商品按钮允许用户跳转到新增商品页面。商品展示部分通过循环遍历商品列表,显示每个商品的类别、缩略图和基本信息,并提供编辑和删除功能。在数据库操作方面,通过异步方法获取商品列表,并根据商品类别进行归类。最后,页面逻辑通过调用云对象获取数据,并将结果赋值给商品列表进行展示。

1、界面情况

点击 商品列表,应该将商品的基本信息显示在右边的界面上。

2、页面布局代码

2.1 页面代码分析

2.1.1 新增商品按钮

        <!-- 添加一个增加按钮,通过这里也可以跳转到新增商品的页面 -->
        <navigator url="./add" class="row add">
            <view class="left">
                <!-- 一个按钮 u-icon  +  -->
                <u-icon name="plus" color="#576b95" size="22"></u-icon>
                <text class="text">新增商品</text>
            </view>
        </navigator>

2.1.2 商品的展示

2.1.3 页面代码(带注释)

<template><view class="goodsList"><!-- 添加一个增加按钮,通过这里也可以跳转到新增商品的页面 --><navigator url="./add" class="row add"><view class="left"><!-- 一个按钮 u-icon  +  --><u-icon name="plus" color="#576b95" size="22"></u-icon><text class="text">新增商品</text></view></navigator><!-- 对商品列表goodsList 进行循环展示 --><view class="row" v-for="item in goodsList" :key="item._id"><view class="title"><!-- 标题栏显示 商品类别名https://uniapp.dcloud.net.cn/component/uniui/uni-section.html#%E4%BB%8B%E7%BB%8D --><uni-section :title="item.name" type="line"></uni-section></view><!-- 下面是该类下的商品 循环展示 在该类商品的 proGroup 列表中--><view class="goodsRow" v-for="row in item.proGroup" :key="row._id"><view class="view"><!-- 左边显示商品缩略图 --><view class="left"><!-- 如果存在就显示图的第一张【0】,不存在就显示默认图 --><image v-if="row.thumb.length" class="pic" :src="row.thumb[0].url" mode="aspectFill"></image><image v-else class="pic" src="../../static/images/logo.png" mode="aspectFill"></image></view><!-- 右边显示商品信息 --><view class="right"><!-- 显示名字,没有描述信息显示 --><view class="top">{{row.name}}</view><view class="info"><!-- 编辑修改 --><view class="icon" @click="clickEdit(row._id)"><u-icon name="edit-pen" size="25"></u-icon></view><!-- 删除该商品 --><view class="icon" @click="clickRemove(row._id)"><u-icon name="trash" size="25"></u-icon></view></view></view></view></view></view></view>
</template>

3.基本方法

3.1、在数据库中获取数据,并归类商品

3.2 数据库 getList的操作 代码分析

	//获取商品列表async getList() {// 获取商品类的信息 在 green-mall-category 的数据库中,数据都在  navData.datalet navData = await db.collection("green-mall-category").get();let goods = []; // 所有用户列表let limit = 100; // 每次查询的数量let offset = 0; // 偏移量	let {total} = await db.collection('green-mall-goods').count(); // 总数量		do {// 获取一个对象  商品列表的对象 并放到goods列表,let {data} = await db.collection('green-mall-goods').skip(offset).limit(limit).get();goods = goods.concat(data); // 将查询到的数据添加到列表中	 concat功能:新获得的data 直接放到goods,不会改变原来的值offset += limit; // 更新偏移量} while (offset < total);  //判断偏移是否小于总数,只要等于大于总数就停止执行循环了。避免10000个商品一次读出来,如果那样,憋憋卡死,效率低下 相当于死循环//对 navData.data 进行循环,对每一个分类找到属于自类的商品,是不是自己的类商品就类ID是不是一致// 过滤 goods中 categroy id 和 item中id一样的数据,并将过滤出来的数据 给item.proGrounavData.data.forEach(item => {let proGroup = goods.filter(g => {return g.category_id == item._id})item.proGroup = proGroup})// 返回商品类数据  navData.data   中 item.proGroup 不为空的  newsArr 新数组let newsArr = navData.data.filter(item => {return item.proGroup.length})return newsArr},

3.3 list.vue 页面中 的引入

const goodsCloudObj = uniCloud.importObject("green-mall-goods")

3.4 页面中逻辑获取数据  调用的是云对象 3.3 ,然后再返数据   res给  goodsList   

            //获取商品列表
            async getGoodsList() {
                let res =await goodsCloudObj.getList();
                console.log(res);
                this.goodsList = res
            }

相关文章:

uniapp-商城-62-后台 商品列表(分类展示商品的布局)

每一个商品都有类别&#xff0c;比如水果&#xff0c;蔬菜&#xff0c;肉&#xff0c;粮油等等&#xff0c;另外每一个商品都有自己的属性&#xff0c;这些都在前面的章节进行了大量篇幅的介绍。这里我们终于完成了商品类的添加&#xff0c;商品的添加&#xff0c;现在到了该进…...

初识C++:模版

本篇博客主要讲解C模版的相关内容。 目录 1.泛型编程 2.函数模板 2.1 函数模版概念 2.2 函数模版格式 2.3 函数模版的原理 2.4 函数模版的实例化 1.隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 2. 显式实例化&#xff1a;在函数名后的<>中指定模…...

【Elasticsearch】给所索引创建多个别名

Elasticsearch 是可以给索引创建多个别名的。 为什么可以创建多个别名 1. 灵活性 - 别名可以为索引提供一个更易于理解的名称&#xff0c;方便用户根据不同的业务场景或用途来引用同一个索引。例如&#xff0c;一个索引可能同时服务于多个不同的应用程序或服务&#xff0c;通…...

Linux入门(九)任务调度

设置任务调度文件 /etc/crontab #设置调度任务 crontab -e #将任务设置到调度文件 # * * * * * # 第1个* 分钟 0-59 # 第2个* 小时 0-23 # 第3个* 天 1-31 # 第4个* 月 1-12 # 第5个* 周 0-7 0和7都代表的是星期天 #每分钟执行 */1 * * * * ls -l /etc/ > /tmp/to.txt0 8,…...

突破认知边界:神经符号AI的未来与元认知挑战

目录 一、神经符号AI的核心领域与研究方法 &#xff08;一&#xff09;知识表示&#xff1a;构建智能世界的语言 &#xff08;二&#xff09;学习与推理&#xff1a;让机器“思考”与“学习” &#xff08;三&#xff09;可解释性与可信度&#xff1a;让AI更透明 &#xf…...

Java 处理地理信息数据[DEM TIF文件数据获取高程]

目录 1、导入依赖包 2、读取方法 3、其他相关地理信息相关内容&#xff1a; 1️⃣常用的坐标系 1、GIS 中的坐标系一般分为两大类&#xff1a; 2. ✅常见的地理坐标系 2.0 CGCS2000&#xff08;EPSG:4490&#xff09; 2.1 WGS84 (World Geodetic System 1984) &#xff08;EPSG…...

谈谈对dubbo的广播机制的理解

目录 1、介绍 1.1、广播调用 1、工作原理 1.2、调用方式 1、Reference 注解 2、XML 配置 3、全局配置 1.3、 广播机制的特性 2、重试机制 2.1、默认行为 2.2、自定义逻辑 1、在业务层封装重试逻辑 2、使用 Reference 3、广播调用的实践 3.1、常用参数 1.…...

对接钉钉消息样例:DING消息、机器人

一、钉钉开放平台配置信息 private static String robotCode private static String appkey private static String appsecret private static Long agentId 二、钉钉开放平台token、用户信息 public static Client createClient() throws Exception {Config config n…...

003-类和对象(二)

类和对象&#xff08;二&#xff09; 1. 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff…...

使用Rancher在CentOS 环境上部署和管理多Kubernetes集群

引言 随着容器技术的迅猛发展&#xff0c;Kubernetes已成为容器编排领域的事实标准。然而&#xff0c;随着企业应用规模的扩大&#xff0c;多集群管理逐渐成为企业IT架构中的重要需求。 Rancher作为一个开源的企业级多集群Kubernetes管理平台&#xff0c;以其友好的用户界面和…...

Java常用数据结构底层实现原理及应用场景

一、线性结构 1. ArrayList 底层实现&#xff1a;动态数组&#xff08;Object[] elementData&#xff09;。 核心特性&#xff1a; 默认初始容量为 10&#xff0c;扩容时容量增长为原来的 1.5 倍&#xff08;int newCapacity oldCapacity (oldCapacity >> 1)&#xf…...

利用朴素贝叶斯对UCI 的 mushroom 数据集进行分类

朴素贝叶斯&#xff08;Naive Bayes&#xff09;是一种基于贝叶斯定理的简单而有效的分类算法&#xff0c;特别适合处理文本分类和多类别分类问题。UCI的Mushroom数据集是一个经典的分类数据集&#xff0c;包含蘑菇的特征和类别&#xff08;可食用或有毒&#xff09;。 1. 数据…...

Linux火墙管理及优化

网络环境配置 使用3个新的虚拟机【配置好软件仓库和网络的】 F1 192.168.150.133 NAT F2 192.168.150.134 192.168.10.20 NAT HOST-ONLY 网络适配仅主机 F3 192.168.10.30 HOST-ONLY 网络适配仅主机 1 ~]# hostnamectl hostname double1.timinglee.org 【更…...

Visual Studio 制作msi文件环境搭建

一、插件安装 a. 插件寻找 在 Visual Studio 2017 中&#xff0c;如果你希望安装用于创建 MSI 安装包的插件&#xff0c;第一步是&#xff1a;打开 Visual Studio 后&#xff0c;点击顶部菜单栏中的 “工具”&#xff08;Tools&#xff09;&#xff0c;然后选择下拉菜单中的 “…...

(Java基础笔记vlog)Java中常见的几种设计模式详解

前言&#xff1a; 在 Java 编程里&#xff0c;设计模式是被反复使用、多数人知晓、经过分类编目的代码设计经验总结。他能帮助开发者更高效地解决常见问题&#xff0c;提升代码的可维护性、可扩展性和复用性。下面介绍Java 中几种常见的设计模式。 单例模式&#xff08;Singlet…...

C++ vector 深度解析:从原理到实战的全方位指南

一、引言 在 C 编程中&#xff0c;我们经常需要处理一组数据。比如&#xff0c;你想存储一个班级所有学生的成绩&#xff0c;或者保存用户输入的一组数字。最容易想到的方法是使用数组&#xff1a; int scores[100]; // 定义一个能存储100个成绩的数组但数组有两个明显的缺点…...

鸿蒙进阶——Framework之Want 隐式匹配机制概述

文章大纲 引言一、Want概述二、Want的类型1、显式Want2、隐式Want3、隐式Want的匹配 三、隐式启动Want 源码概述1、有且仅有一个Ability匹配2、有多个Ability 匹配需要弹出选择对话框3、ImplicitStartProcessor::ImplicitStartAbility3.1、GenerateAbilityRequestByAction3.1.1…...

antv/g6 图谱封装配置(二)

继上次实现图谱后&#xff0c;后续发现如果要继续加入不同样式的图谱实现起来太过麻烦&#xff0c;因此考虑将配置项全部提取封装到js文件中&#xff0c;图谱组件只专注于实现各种不同的组件&#xff0c;其中主要封装的点就是各个节点的横坐标&#xff08;x&#xff09;,纵坐标…...

OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数创建的是一个 最小值滤波器&#xff08;Minimum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最小值。常用于&…...

网络抓包命令tcpdump及分析工具wireshark使用

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 8,Linux x86-64 Red Hat Enterprise Linux 7,Linux x86-64 SLES 12,银河麒麟 &#xff08;鲲鹏&#xff09;,银河麒麟 &#xff08;X86_64&#xff09;,银河麒麟&#xff08;龙…...

linux strace调式定位系统问题

strace 的基本功能 strace 的主要功能包括&#xff1a; 跟踪系统调用&#xff1a;显示进程执行时调用的系统函数及其参数和返回值。监控信号&#xff1a;记录进程接收到的信号。性能分析&#xff1a;统计系统调用的执行时间和次数。调试支持&#xff1a;帮助定位程序崩溃、性…...

femap许可与云计算集成

随着云计算技术的迅猛发展&#xff0c;越来越多的企业开始将关键应用和服务迁移到云端&#xff0c;以享受其带来的弹性扩展、高效管理和成本优化等优势。Femap作为一款强大的电磁仿真工具&#xff0c;通过与云计算的集成&#xff0c;将为企业带来前所未有的许可管理和仿真分析体…...

车载诊断架构 --- 车载诊断有那些内容(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

【Hadoop】大数据技术之 HDFS

目录 一、HDFS 概述 1.1 HDFS 产出背景及定义 1.2 HDFS 优缺点 1.3 HDFS 组成架构 1.4 HDFS 文件块大小 二、HDFS 的Shell 操作 三、HDFS 的读写流程&#xff08;面试重点&#xff09; 3.1 HDFS 写数据流程 3.2 HDFS 读数据流程 四、DataNode 4.1 DataNode 的工作机制…...

聊一下CSS中的标准流,浮动流,文本流,文档流

在网络上关于CSS的文章中&#xff0c;有时候能听到“标准流”&#xff0c;“浮动流”&#xff0c;“定位流”等等词语&#xff0c;还有像“文档流”&#xff0c;“文本流”等词&#xff0c;这些流是什么意思&#xff1f;它们是CSS中的一些布局方案和特性。今天我们就来聊一下CS…...

ATGM332D-F8N22单北斗多频定位导航模块

ATGM332D-F8N 系列模块是 12.216mm 尺寸的高性能单北斗多频定位导航模块。该系列模块产品基于中科微新一代 SOC 单北斗多频芯片 AT9880B&#xff0c;支持北斗二号和北斗三号的 B1I、B1C、B2I、B3I、B2a 和 B2b 频点信号。 主要特征 多频点单北斗接收机 支持北斗二号、北斗三号…...

2024年热门AI趋势及回顾

人工智能的崛起 2024 年可能会被铭记为人工智能不再是一种技术新奇事物&#xff0c;而是成为现实的一年。微软、Salesforce 和 Intuit 等巨头将人工智能融入主流企业解决方案&#xff1b;从文案写作到数据分析&#xff0c;专门的人工智能应用程序和服务如雨后春笋般涌现&#…...

【信息系统项目管理师】第20章:高级项目管理 - 28个经典题目及详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...

3. OpenManus-RL中使用AgentGym建立强化学习环境

AgentGym概述 AgentGym是为评估和开发大模型agent而设计的支持多环境和多任务的框架。该框架统一采用ReAct格式&#xff0c;提供多样化的交互环境和任务&#xff0c;支持实时反馈和并发操作。 What is Ai Agent&#xff08;基于大模型的智能体&#xff09;? 首先是人造实体&…...

C++性能测试工具——sysprof的使用

一、sysprof sysprof相对于前面的一些性能测试工具来说&#xff0c;要简单不少。特别是其图形界面的操作&#xff0c;非常容易上手&#xff0c;它还支持分析文件的保存和导入功能&#xff0c;这是一个非常不错的功能。做为一款系统性能测试工具&#xff0c;它支持多种硬件平台…...