整站优化深圳,济南网络推广公司排名,永嘉网站制作公司,石碣企业网站建设公司技术栈
Appgallery connect
前言#xff1a;
上一节我们实现订单与优惠券的联合提交时#xff0c;我去到订单列表页面查看生成的订单信息#xff0c;发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。
问题来源#xff1a;
async …技术栈
Appgallery connect
前言
上一节我们实现订单与优惠券的联合提交时我去到订单列表页面查看生成的订单信息发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。
问题来源
async aboutToAppear(): Promisevoid {const value await StorageUtils.getAll(user);if (value ! ) {this.user JSON.parse(value)}if (this.currentIndexCheckthis.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.orderInfodata1let 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.productListJSON.parse(json1)this.flagtrue}}我们可以看到当我们进入到待发货页面的时候我们进行了orderlist所有订单的请求这里的请求是没有错的我们继续向下这时候我们通过条件进行数据查询
condition1.equalTo(order_product_id,data1[0].order_product_id)这里我们直接拿了当前第一条数据放到list中去执行逻辑这就会导致我们列表的所有内容展示的都是第一条的相关商品和价格展示的图片和价格都是一样的。
发现问题之后决定采用map来存储不同order_product_id对应的数据这样我们在循环的时候用order_product_id来作为key 取出对应的数据就好了。现在我们来进行修改。
//先定义一个全局的map接收内容State mapList:Mapstring,OrderProductList[]|nullnull//在这里把原先只请求第一条的逻辑替换掉存到map中css
const myMap new Mapstring,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.mapListmyMap现在我们就拿到了所有的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)这样我们的列表页面就完成了逻辑优化变得通顺了