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

《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)

技术栈

Appgallery connect

前言:

上一节我们实现订单与优惠券的联合提交时,我去到订单列表页面查看生成的订单信息,发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。

问题来源:

async aboutToAppear(): Promise<void> {const value = await StorageUtils.getAll('user');if (value != "") {this.user = JSON.parse(value)}if (this.currentIndexCheck==this.currentIndex) {let databaseZone = cloudDatabase.zone('default');let condition = new cloudDatabase.DatabaseQuery(order_list);condition.equalTo("user_id",this.user?.user_id).and().equalTo("order_status",0)let listData = await databaseZone.query(condition);let json = JSON.stringify(listData)let data1:OrderList[]= JSON.parse(json)this.orderInfo=data1let condition1 = new cloudDatabase.DatabaseQuery(order_product_list);condition1.equalTo("order_product_id",data1[0].order_product_id)let listData1 = await databaseZone.query(condition1);let json1 = JSON.stringify(listData1)this.productList=JSON.parse(json1)this.flag=true}}

我们可以看到,当我们进入到待发货页面的时候,我们进行了orderlist所有订单的请求,这里的请求是没有错的,我们继续向下,这时候我们通过条件进行数据查询

condition1.equalTo("order_product_id",data1[0].order_product_id)

这里我们直接拿了当前第一条数据放到list中去执行逻辑,这就会导致,我们列表的所有内容展示的都是第一条的相关商品和价格,展示的图片和价格都是一样的。

发现问题之后决定采用map来存储不同order_product_id对应的数据,这样我们在循环的时候用order_product_id来作为key ,取出对应的数据就好了。现在我们来进行修改。

//先定义一个全局的map接收内容@State mapList:Map<string,OrderProductList[]>|null=null//在这里把原先只请求第一条的逻辑替换掉存到map中```css
const myMap = new Map<string,OrderProductList[]>();for (let i = 0; i <data1.length; i++) {let condition1 = new cloudDatabase.DatabaseQuery(order_product_list);condition1.equalTo("order_product_id",data1[i].order_product_id)let listData1 = await databaseZone.query(condition1);let json1 = JSON.stringify(listData1)myMap.set(data1[i].order_product_id,JSON.parse(json1))}this.mapList=myMap

现在我们就拿到了所有的order_product_list对应的商品数据了,现在我们还缺少对应的价格计算

//因为我们列表是通过循环展示的,这样每次我们都只会取一条数据出来,所以我们只需要取出key 对应的数组中的第一条数据即可price(item:OrderList):number{const  money= this.mapList!.get(String(item.order_product_id))return  money![0].buyAmount*money![0].price}

在商品流数据展示的list我们也要吧数据源修改一下

  List({space:10}){ForEach(this.mapList?.get(item.order_product_id),(pos:OrderProductList)=>{ListItem(){Column(){Image(pos.img).height(60).width(60).borderRadius(5)}}})}.padding({left:10}).width('100%').listDirection(Axis.Horizontal).height(80)

这样我们的列表页面就完成了逻辑优化,变得通顺了

http://www.xdnf.cn/news/1059337.html

相关文章:

  • SKUA-GOCAD入门教程-第八节 线的创建与编辑5
  • C/Fortran多核并行计算
  • wireshark过滤器的使用
  • tomcat 配置规范
  • stack 和 queue练习
  • 【面试题001】生产环境中如何排查MySQL CPU占用率高达100%?
  • linux kernel优化之rootfs
  • CANFD加速是什么?和CANFD有什么区别?
  • linux 下 jenkins 构建 uniapp node-sass 报错
  • 使用@SpringJUnitConfig注解开发遇到的空指针问题
  • spring-webmvc @InitBinder 典型用法
  • 《挑战你的控制力!开源项目小游戏学习“保持平衡”开发解析:用HTML+JS+CSS实现物理平衡挑战》​
  • 【51单片机】8. 矩阵LED显示自定义图案、动画
  • 用idea操作git缓存区回退、本地库回退、远程库回退
  • singlefligt使用方法和源码解读
  • 无需公网IP:Termux+手机+内网穿透实现Minecraft远程多人联机
  • Uniapp 中根据不同离开页面方式处理 `onHide` 的方法
  • python3:线程管理进程
  • 前端打断点
  • python校园服务交流系统
  • 第十八天:初级数据库学习笔记2
  • easyexcel基于模板生成报表
  • RabbitMQ七种工作模式
  • 21.加密系统函数
  • macOS版的节点小宝上架苹果APP Store了
  • git的使用——初步认识git和基础操作
  • DeepForest开源程序是用于 Airborne RGB 机器学习的 Python 软件包
  • 使用 Elasticsearch 提升 Copilot 能力
  • [计算机网络] 网络的诞生:协议的认知建立
  • 2025年暑期在线实习项目分享