《仿盒马》app开发技术分享-- 商品详情页(10)

简介: 上一节我们实现了自定义标题栏和商品详情的数据接收,我们已经拿到了想要的数据,这一节我们要丰富商品详情页的内容。商品详情页面我们需要展示的是商品的各个属性参数、商品的图片、商品规格、活动详情等

技术栈

Appgallery connect

开发准备

上一节我们实现了自定义标题栏和商品详情的数据接收,我们已经拿到了想要的数据,这一节我们要丰富商品详情页的内容。商品详情页面我们需要展示的是商品的各个属性参数、商品的图片、商品规格、活动详情等

功能分析

商品详情页面的结构需要我们去用比较多的布局去处理,首先因为商品详情页面对的数据足够多,需要他能够实现滚动查看信息,然后我们需要在底部固定加入购物车和立即购买按钮,并且我们加购之后,我们也要在页面中即使响应购物车中的商品数。同时给到用户便捷跳转到购物车的按钮

代码实现

我们先进行数据的填充,因为上一节我们已经接收到数据,所以我们直接吧数据打印到text上,对着数据进行填充,同时还能帮我们暂时丰富一下页面内容,查看滑动的效果,页面完善之后我们再去删掉即可

Text(JSON.stringify(this.productParams))
.fontColor(Color.Black)

然后我们根据设计的样式进行数据填充,要注意滚动和底部布局的固定,挑选合适的布局容器

Stack({alignContent:Alignment.Bottom}){
Scroll(this.scroller){
Column() {
CommonTopBar({ title: "商品详情", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})
Image(this.productParams.url)
.width('100%')
.height(300)
Text(JSON.stringify(this.productParams))
.fontColor(Color.Black)
Column({space:10}){
Row(){
if (this.productParams.promotion_spread_price>0){
Text(){
Span("¥")
.fontSize(14)
.fontColor(Color.Red)
Span(this.productParams.promotion_spread_price+"")
.fontSize(20)
.fontColor(Color.Red)
}
}else {
Text(){
Span("¥")
.fontSize(14)
.fontColor(Color.Red)
Span(this.productParams.price+"")
.fontSize(20)
.fontColor(Color.Red)
}
}

            Text("¥"+this.productParams.original_price+"")
              .fontColor('#999')
              .decoration({
                type: TextDecorationType.LineThrough,
                color: Color.Gray
              })
              .fontSize(16)
              .margin({left:10})

            if (this.productParams.promotion_spread_price>0){
              Row(){
                Text("每件立减"+(this.productParams.price-this.productParams.promotion_spread_price)+"元")
                  .fontSize(14)
                  .borderRadius(20)
                  .backgroundColor("#FB424C")
                  .padding(3)
                  .textAlign(TextAlign.Center)
                Text("每人限购"+this.productParams.max_loop_amount+"件")
                  .margin({left:5})
                  .fontSize(14)
                  .borderRadius(20)
                  .backgroundColor("#FB424C")
                  .padding(3)
                  .textAlign(TextAlign.Center)
              }
              .padding({top:2,bottom:2,left:10})
            }



          }
          .padding(10)

          if (this.productParams.promotion_spread_price>0){
            Text(this.productParams.endTime)
              .fontSize(14)
              .borderRadius(20)
              .backgroundColor("#FB424C")
              .padding(3)
              .margin({left:10})
              .textAlign(TextAlign.Center)
          }

          Text(this.productParams.name)
            .fontSize(20)
            .fontColor(Color.Black)
            .margin({left:10})
            .fontWeight(FontWeight.Bold)
          Text(this.productParams.text_message)
            .fontSize(14)
            .fontColor(Color.Black)
            .margin({left:10})
          Row(){
            Text()
            Text("销量 "+this.productParams.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.productParams.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.productParams.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(){
              Text("请选择规格")
            }
          }
          .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(){
    Image($r('app.media.product_details_cart'))
      .width(35)
      .height(35)
      .objectFit(ImageFit.Contain)


    Blank()

    Text("加入购物车")
      .padding(10)
      .width(100)
      .textAlign(TextAlign.Center)
      .backgroundColor("#FCDB29")
      .fontColor(Color.White)
      .borderRadius({topLeft:15,bottomLeft:15})

    Text(" 立即购买 ")
      .padding(10)
      .textAlign(TextAlign.Center)
      .width(100)
      .backgroundColor(Color.Red)
      .fontColor(Color.White)
      .borderRadius({topRight:15,bottomRight:15})
  }
  .padding(15)
  .justifyContent(FlexAlign.SpaceBetween)
  .width('100%')
  .backgroundColor(Color.White)
}
.backgroundColor(Color.White)

到这里我们的商品详情页面的内容已经比较完善了

相关文章
《仿盒马》app开发技术分享-- 确认订单页(数据展示)(29)
上一节我们实现了地址的添加,那么有了地址之后我们接下来的重点就可以放到订单生成上了,我们在购物车页面,点击结算会跳转到一个 订单确认页面,在这个页面我们需要有地址选择、加购列表展示、价格计算、优惠计算、商品数量展示等信息。
489 3
|
存储 缓存 前端开发
《仿盒马》app开发技术分享-- 用户登录页(业务逻辑)(21)
上一节我们实现了静态的用户登录页,这一节我们需要给他添加上业务逻辑,实现跟云数据库的互通,同时跟整个应用关联起来,因为我们还没有实现用户的注册页面,所以这里我们在云数据库的用户数据插入暂时先不做同用户名的校验,我们在云端先插入几条数据,暂时专注于查询即可
318 5
|
定位技术
《仿盒马》app开发技术分享-- 地图选点(27)
上一节我们实现了地图的简单展示,这一节我们要实现的内容是,根据展示的地图,实现当前定位功能,当前位置的poi地址功能,以及列表的展示,给地图添加标记,展示自己的当前定位
270 4
|
定位技术 API
《仿盒马》app开发技术分享-- 原生地图展示(26)
上一节我们实现了获取当前用户的位置,并且成功的拿到了经纬度,这一节我们就要根据拿到的经纬度,结合我们其他的知识点来实现地图的展示。
337 4
|
数据库
《仿盒马》app开发技术分享-- 确认订单页(业务逻辑)(30)
上一节我们实现了确认订单页的页面绘制和价格计算优惠计算,订单列表展示等功能,这一节我们来实现确认订单页的整个业务逻辑。首先我们要实现的就是地址的选择,然后把我们计算的价格,商品列表等数据保存起来,然后我们开始创建订单表实体类等,把这些数据提交到订单表中
373 3
|
存储 定位技术 数据库
《仿盒马》app开发技术分享-- 新增地址(28)
上一节我们实现了地图选点,获取当前位置,在地图上添加标记,根据当前的定位获取poi地址列表等功能,这些全部都为了我们这一节而铺垫,这一节我们要实现的是新增地址,把我们的用户信息,填写收件人、门牌号、手机号、经纬度、详细地址等信息添加到我们的云数据库中,然后在地址查询列表里展示出来。
349 2
|
前端开发
《仿盒马》app开发技术分享-- 个人中心页or静态头像选择(业务逻辑)(22)
上一节我们实现了登录页面的业务逻辑,并且成功的实现了数据的查询,同时我们新增了用户首选项的工具类,现在主界面往登录页面跳转,登录成功后我们关闭登录页面,这时候我们就会回到个人中心页面,那么现在我们的业务逻辑是一种什么样的形式?登录成功后我们需要显示用户的信息,并且在下次登录时依旧展示个人信息。同时我们还新增了一个头像选择的静态弹窗,丰富个人信息页面
314 1
|
前端开发 定位技术
《仿盒马》app开发技术分享-- 定位获取(25)
上一节我们实现了地址管理页面的数据查询和展示,接下来我们要实现的功能是地址添加相关的,我们想实现的功能是地图选点,那么在地图选点之前我们要做的就是先获取用户当前的定位。获取定位后我们拿到经纬度和其他信息,然后在对应的地图上展示。
297 0
|
JSON 前端开发 数据库
《仿盒马》app开发技术分享-- 地址管理页(24)
上一节我们实现了个人信息页面的信息展示和页面修改,并且实现了数据的同步修改,这一节我们来实现电商应用里比较重要的模块,地址模块。首先我们来实现地址的展示。
305 0
|
JSON 前端开发 数据库
《仿盒马》app开发技术分享-- 个人信息页(23)
上一节我们实现了个人中心的业务逻辑,实现了个人信息修改后的动态更换,而且实现了一个静态的头像选择弹窗,但是这个弹窗我们并没有使用。这一节我们在个人信息页面就会使用到这个弹窗并且还涉及其他的弹窗。以及信息的同步展示和修改
308 0

热门文章

最新文章