《仿盒马》app开发技术分享-- 兑换商品详情(69)

鸿蒙小林
• 阅读 3

技术栈

Appgallery connect

开发准备

上一节我们实现了兑换商品列表的展示,用户可以在回收之后通过积分页面进入兑换列表页查看当前能够兑换的商品了,我们距离一个完整的app又更近了一步,现在我们要实现的就是当用户点击列表条目的时候能够查看数据详情。

功能分析

在数据列表展示的时候其实我们已经获取到了当前商品的大部分数据,但是为了获取内容的实时性,保证跟云端能够匹配,我们还是通过id查询的方式查询用户点击条目的对应商品数据。查询出对应的商品条目数据后,我们在列表上进行展示

代码实现

首先我们把兑换商品的id 传递到详情页面

 .onClick(() => {
      let product: ProductDetailModel = {
        id: item.id
      };
      router.pushUrl({
        url: 'pages/recycle/points/PointsDetailsPage',
        params: product
      }, (err) => {
        if (err) {
          console.error(`Invoke pushUrl failed, code is ${err.code}, message is ${err.message}`);
          return;
        }
      });
    })

接收id进行数据查询

@State pointsProduct:PointsProduct|null=null
  async aboutToAppear(): Promise<void> {
    let databaseZone = cloudDatabase.zone('default');
    let product = await router.getParams() as ProductDetailModel;
    let condition1 = new cloudDatabase.DatabaseQuery(points_product);
    condition1.equalTo("id",product.id)
    let productDetail = await databaseZone.query(condition1);
    let json = JSON.stringify(productDetail)
    let list:PointsProduct[]= JSON.parse(json)
    this.pointsProduct=list[0]
  }

展示其他数据到对应的组件

 build() {
    Stack({alignContent:Alignment.Bottom}){
      Scroll(this.scroller){
        Column() {
          CommonTopBar({ title: "商品详情", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})
          Image(this.pointsProduct?.url)
            .width('100%')
            .height(300)
            .objectFit(ImageFit.Cover)
          Column({space:10}){
            Row(){

                Text(){
                  Span("$")
                    .fontSize(14)
                    .fontColor(Color.Red)
                  Span(this.pointsProduct?.points+"")
                    .fontSize(22)
                    .fontColor(Color.Red)
                }




            }
            .padding(10)


            Text(this.pointsProduct?.name)
              .fontSize(20)
              .fontColor(Color.Black)
              .margin({left:10})
              .fontWeight(FontWeight.Bold)
            Text(this.pointsProduct?.text_message)
              .fontSize(14)
              .fontColor(Color.Gray)
              .margin({left:10})
            Row(){
              Text()
              Text("已兑换 "+this.pointsProduct?.sales_volume)
                .fontSize(14)
                .fontColor(Color.Black)
            }
            .padding(10)
            .width('100%')
            .justifyContent(FlexAlign.SpaceBetween)


            Divider().width('100%')
              .height(5).backgroundColor("#f7f7f7")
            Row(){
              Text("发货")
                .fontColor(Color.Gray)
                .fontSize(14)

              Text(this.pointsProduct?.delivery_time+"")
                .fontSize(14)
                .margin({left:20})
                .fontColor(Color.Black)
            }
            .padding(10)
            .width('100%')
            .justifyContent(FlexAlign.Start)
            Divider().width('100%')
              .height(5).backgroundColor("#f7f7f7")
            Row(){
              Text("参数")
                .fontColor(Color.Gray)
                .fontSize(14)

              Text("储存:")
                .margin({left:20})
                .fontSize(14)
                .fontColor(Color.Black)
              Text(this.pointsProduct?.parameter)
                .fontSize(14)
                .fontColor(Color.Black)
            }
            .padding(10)

            .width('100%')
            .justifyContent(FlexAlign.Start)
            Divider().width('100%')
              .height(5).backgroundColor("#f7f7f7")


            Row(){
              Text("规格")
                .fontColor(Color.Gray)
                .fontSize(14)

              Column({space:5}){
                Text(this.pointsProduct?.spec_str)
                  .fontSize(14)
                  .fontColor(Color.Black)
              }
              .alignItems(HorizontalAlign.Start)
              .margin({left:20})

            }
            .padding(10)
            .width('100%')
            .justifyContent(FlexAlign.Start)
            Divider().width('100%')
              .height(5).backgroundColor("#f7f7f7")
          }
          .alignItems(HorizontalAlign.Start)
        }
        .alignItems(HorizontalAlign.Start)
        .backgroundColor(Color.White)


      }
      .padding({bottom:80})
      .height('100%')
      .width('100%')
      Row(){
        Text()


        Blank()

        Text("立即兑换")
          .padding(10)
          .width('45%')
          .textAlign(TextAlign.Center)
          .backgroundColor("#FCDB29")
          .fontColor(Color.White)
          .borderRadius(15)
          .onClick(()=>{
          })

      }
      .padding(15)
      .justifyContent(FlexAlign.SpaceBetween)
      .width('100%')
      .backgroundColor(Color.White)
    }
    .backgroundColor(Color.White)


  }

到这里我们就实现了兑换物品的商品详情页

点赞
收藏
评论区
推荐文章
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 回收记录页(47)
技术栈Appgalleryconnect开发准备上一节我们实现了在订单列表中查看订单详情,但是我们的回收相关的营收就必须要进入到商品详情页才能够进行查看,如果我们在订单较多的情况下,一个一个的查看订单的详情就会变得非常的麻烦了,现在我们需要实现一个订单记录
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换商品数据插入(67)
技术栈Appgalleryconnect开发准备上一节我们实现了积分列表的展示,我们可以更直观的查看当前用户积分的收支情况,但是现在我们只有积分收入并没有消费的地方,所以现在我们开始着手积分兑换相关的内容。这一节我们来实现积分兑换商品的内容功能分析首先我们
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 商品兑换校验(70)
技术栈Appgalleryconnect开发准备上一节我们实现了可兑换商品的详情,我们能够查看到商品更多的信息,这一节我们来实现商品兑换相关的功能,在进行商品兑换之前,我们在兑换详情页面,点击立即兑换按钮之后我们需要跳转到兑换详情页,但是用户的积分可能达不
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换页地址商品展示(71)
技术栈Appgalleryconnect开发准备上一节我们实现了商品兑换的校验功能,这能很好的帮助用户节省更多的时间,同时也能减小服务器的开销,同时我们的业务逻辑也会更加的完善功能也更加的丰富了,这一节我们实现校验通过后的内容,实现地址的选择和兑换商品信息
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换提交准备(72)
技术栈Appgalleryconnect开发准备上一节我们实现了地址的选择,商品数据的展示,我们页面中需要的提交的内容还有所欠缺,我们还需要新增一些展示兑换细节的组件,同时在提交之前还需要实现备注功能,我们还要在页面中展示一些积分相关的内容,告知用户积分的
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换订单提交(73)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换提交前的准备页面,向用户展示了兑换相关的所有信息,这一节我们就可以实现兑换订单的提交了功能分析订单提交我们需要创建对应的兑换商品订单提交信息表,我们需要把地址,商品信息,积分,备注,订单状
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换订单列表框架(75)
技术栈Appgalleryconnect开发准备上一节我们针对订单兑换的业务逻辑进行了完善,成功的在兑换物品之后修改了用户信息的修改,新增了积分消费的记录。这一节我们实现订单创建之后进入的列表展示页框架。功能分析兑换商品的订单列表框架我们选择使用tabs,
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 待发货兑换订单列表(76)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换订单展示页面的框架,这一节我们要进行兑换订单的展示,在兑换订单提交后,默认的状态是待发货状态,我们用列表的方式展示出来功能分析进入页面时我们就要通过用户的userid去查询对应的订单,获取
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换商品收货确认&已完成列表展示(79)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换商品订单的确认揽收功能,实现了tabs切换时的数据刷新,实现了待收货订单的列表展示。这一节我们要实现确认收货功能,并且实现待收货的列表展示功能功能分析当我们点击确认揽收的时候,修改订单状态
鸿蒙小林 鸿蒙小林
6小时前
《仿盒马》app开发技术分享-- 兑换商品订单详情页(80)
技术栈Appgalleryconnect开发准备我们的兑换商品列表相关的功能都已经实现的差不多了,现在我们还缺少一个订单详情查看的功能,为了ui一致性,我们的订单详情页样式要保持一致性,外观要跟订单、回收单的详情页相似。功能分析要实现订单详情首先我们需要拿