《仿盒马》app开发技术分享-- 兑换页地址商品展示(71)

简介: 上一节我们实现了商品兑换的校验功能,这能很好的帮助用户节省更多的时间,同时也能减小服务器的开销,同时我们的业务逻辑也会更加的完善功能也更加的丰富了,这一节我们实现校验通过后的内容,实现地址的选择和兑换商品信息的展示

技术栈

Appgallery connect

开发准备

上一节我们实现了商品兑换的校验功能,这能很好的帮助用户节省更多的时间,同时也能减小服务器的开销,同时我们的业务逻辑也会更加的完善功能也更加的丰富了,这一节我们实现校验通过后的内容,实现地址的选择和兑换商品信息的展示

功能分析

地址的选择我们通过获取地址管理页的地址来实现,商品兑换信息的展示我们通过传递详情页的商品id来这个页面继续进行查询。保证数据的实时性。地址的传递我们在点击事件中去传递,然后我们在兑换地址商品展示页去拿到我们传递的地址,在传输地址之前我们需要先新建地址传递的实体类,商品id传递的实体类,在拿到数据之后在页面的生命周期中拿到传递的数据。

代码实现

首先我们实现地址的选择,因为我们需要从另一个页面中传递数据,为了避免数据获取不到的情况,所以我们选择在onpageshow中拿到传递的数据,拿到传递的数据之后把传递过来的string字符串数据转换为json实体。

 @State addressInfo:AddressList|null=null
 onPageShow(): void {
   
    let params1 = router.getParams() as AddressModel
    if (params1!=null&&params1.address!=undefined){
   
      this.addressInfo=JSON.parse(params1.address)
    }
  }

然后我们在页面中拿到传递过来的id,后续根据id查询对应的商品信息,在使用云数据库条件查询数据源,拿到数据源之后我们得到一个数组类型的数据,因为我们查询到的数据只有一条,所以直接拿下标为0的数据即可

@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]
  }

把获取到的地址信息展示到页面上


        if (this.addressInfo!=null){
   
          Column({
   space:10}){
   
            Row({
   space:20}){
   
              Image($r('app.media.order_location'))
                .height(20)
                .width(20)
              Column(){
   
                Row(){
   
                  Text(this.addressInfo.nikeName)
                    .fontColor(Color.Black)
                    .fontSize(16)
                    .fontWeight(FontWeight.Bold)
                  Text(this.addressInfo.phone)
                    .fontColor(Color.Black)
                    .fontSize(16)
                    .fontWeight(FontWeight.Bold)
                    .margin({
   left:20})
                }

                Text(this.addressInfo.administrativeArea+this.addressInfo.locality+this.addressInfo.subLocality+this.addressInfo.placeName+this.addressInfo.address)
                  .fontColor(Color.Black)
                  .fontSize(16)
                  .margin({
   top:10})
                  .width('80%')
              }
              .alignItems(HorizontalAlign.Start)
              .width('100%')

            }
          }
          .alignItems(HorizontalAlign.Start)
          .justifyContent(FlexAlign.Center)
          .padding(15)
          .width('100%')
          .justifyContent(FlexAlign.SpaceBetween)
          .onClick(()=>{
   
            let  status:AddressPointsStatusModel={
   
              status:true
            }
            router.pushUrl({url:'pages/view/AddressListPage',params:status})
          })

        }else {
   
          Row({
   space:20}){
   
            Image($r('app.media.order_location'))
              .height(20)
              .width(20)
            Text("请选择收货地址")
              .fontColor(Color.Black)
              .fontSize(16)
            Blank()
            Image($r('app.media.right'))
              .height(20)
              .width(20)
          }
          .padding(10)
          .width('100%')
          .justifyContent(FlexAlign.SpaceBetween)
          .height(40)
          .alignItems(VerticalAlign.Center)
          .onClick(()=>{
   
            let  status:AddressPointsStatusModel={
   
              status:true
            }
            router.pushUrl({url:'pages/view/AddressListPage',params:status})
          })
        }

然后我们把查询出的兑换商品展示到页面上

  Column(){
   
          Row() {
   
            Row({
    space: 10 }) {
   
              Image(this.pointsProduct?.url)
                .height(70)
                .width(70)
                .margin({
    left: 10 })
                .borderRadius(10)
              Column({
    space: 5 }) {
   
                Text(this.pointsProduct?.name)
                  .fontColor(Color.Black)
                  .fontSize(14)

                Text(this.pointsProduct?.spec_str)
                  .fontColor(Color.Grey)
                  .fontSize(14)

                Row() {
   
                  Text() {
   
                    Span("$ ")
                      .fontSize(14)
                      .fontColor(Color.Red)
                    Span(this.pointsProduct?.points + "")
                      .fontSize(16)
                      .fontColor(Color.Red)
                  }
                }
                .alignItems(VerticalAlign.Bottom)


                Text("数量:" + this.pointsProduct?.amount)
                  .fontColor(Color.Black)
                  .fontColor(Color.Gray)
                  .fontSize(12)
              }
              .alignItems(HorizontalAlign.Start)

            }

            .justifyContent(FlexAlign.Start)
            .alignItems(VerticalAlign.Top)


            Blank()

            Text("$ " + this.pointsProduct!.points*this.pointsProduct!.amount)
              .fontColor(Color.Black)
              .fontSize(14)
          }
          .padding(10)
          .width('100%')
          .alignItems(VerticalAlign.Top)
          .justifyContent(FlexAlign.SpaceBetween)


          Divider()
            .width('100%')
            .height(1)
            .backgroundColor("#f7f7f7")

        }

现在我们就实现了兑换页地址和商品的展示逻辑

相关文章
|
3月前
|
JSON 监控 数据格式
1688 item_search_app 关键字搜索商品接口深度分析及 Python 实现
1688开放平台item_search_app接口专为移动端优化,支持关键词搜索、多维度筛选与排序,可获取商品详情及供应商信息,适用于货源采集、价格监控与竞品分析,助力采购决策。
|
6月前
《仿盒马》app开发技术分享-- 商品兑换校验(70)
上一节我们实现了可兑换商品的详情,我们能够查看到商品更多的信息,这一节我们来实现商品兑换相关的功能,在进行商品兑换之前,我们在兑换详情页面,点击立即兑换按钮之后我们需要跳转到兑换详情页,但是用户的积分可能达不到我们当前商品的兑换标准,这时候如果我们进入了下个页面,在用户点击确认的时候去校验,就让用户多操作了一步,这样的操作体验非常的不友好,所以我们在兑换前进行校验,通过校验后我们在确认页实现地址添加相关的内容
113 4
|
6月前
|
数据库
《仿盒马》app开发技术分享-- 兑换商品取消订单&取消列表展示(77)
上一节我们实现了兑换订单待发货列表的展示逻辑,成功的在列表中展示出来,我们在订单条目中新增了两个按钮,确认揽收与取消订单,这一节我们要实现的功能是订单的取消,以及订单取消后取消列表的展示
119 1
|
6月前
|
JSON 数据格式
《仿盒马》app开发技术分享-- 分类右侧商品列表(18)
上一节我们实现了分类页左侧二级分类列表功能,并实现了顶部列表&弹窗跟左侧列表的联动,这一节我们需要在它们联动的基础上继续添加右侧列表的联动效果
104 4
|
6月前
|
存储 数据库
《仿盒马》app开发技术分享-- 商品搜索页(搜索记录&商品搜索)(38)
上一节我们新建了商品搜索页,实现了顶部的搜索bar以及下方的推荐搜索列表,这一节我们要新增一个商品搜索记录列表,以及输入内容之后搜索出对应商品的功能,我们还需要保证搜索内容的唯一性,以及搜索记录的本地数据持久化和搜索记录列表的删除
120 2
|
6月前
|
存储 定位技术 数据库
《仿盒马》app开发技术分享-- 新增地址(28)
上一节我们实现了地图选点,获取当前位置,在地图上添加标记,根据当前的定位获取poi地址列表等功能,这些全部都为了我们这一节而铺垫,这一节我们要实现的是新增地址,把我们的用户信息,填写收件人、门牌号、手机号、经纬度、详细地址等信息添加到我们的云数据库中,然后在地址查询列表里展示出来。
165 2
|
API 数据库
《仿盒马》app开发技术分享-- 兑换商品订单详情页(80)
我们的兑换商品列表相关的功能都已经实现的差不多了,现在我们还缺少一个订单详情查看的功能,为了ui一致性,我们的订单详情页样式要保持一致性,外观要跟订单、回收单的详情页相似。
125 0
|
6月前
《仿盒马》app开发技术分享-- 兑换商品收货确认&已完成列表展示(79)
上一节我们实现了兑换商品订单的确认揽收功能,实现了tabs切换时的数据刷新,实现了待收货订单的列表展示。这一节我们要实现确认收货功能,并且实现待收货的列表展示功能
122 0
|
6月前
《仿盒马》app开发技术分享-- 兑换商品确认揽收&待收货列表展示(78)
上一节我们实现了订单取消功能,实现了tabs切换时的数据刷新,实现了已取消订单的列表展示。这一节我们要实现揽收功能,并且实现待收货的列表展示功能
156 0

热门文章

最新文章