第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

《仿盒馬》app開發(fā)技術分享-- 訂單詳情頁(32)

標簽:
鴻蒙 HarmonyOS

技术栈

Appgallery connect

开发准备

在之前的章节中我们实现了订单的提交,以及提交之后跳转到确认订单页面,在确认订单页面我们添加了一个入口,这个入口是查询订单,当我们点击入口时,我们需要跳转到一个新的界面,这个界面通过接收上个界面的订单id或者订单code 等信息,进行订单的详细内容展示

功能分析

要想实现订单内容的展示,首先我们要解决订单查询的问题,之前的订单提交页面,因为我们做了一张关联表,把提交的商品放置到了一张单独的表中,通过order_product_id去做关联查询,所以我们还需要根据id 把对应的商品列表查出来,然后我们再查出对应order_code 对应的订单,展示到页面上,同时展示出更多的信息给到用户

代码实现

首先在确认订单页面实现数据的传递

  Text("查看订单")
          .fontSize(16)
          .fontColor(Color.Black)
          .padding(10)
          .borderRadius(10)
          .border({width:1,color:Color.Grey})
          .onClick(()=>{
            router.pushUrl({url:'pages/view/OrderDetailsPage',params:{code:this.orderInfo!.order_code}})
          })

然后我们回到订单详情页面进行传递数据的接收

@State orderCode:string=''
 let params = (this.getUIContext().getRouter().getParams() as Record<string, string>)['code']
    if (params!=undefined&& params!=''){
      this.orderCode=params
    }

接收到数据之后我们首先根据ordercode进行表数据的查询

let databaseZone = cloudDatabase.zone('default');
    let condition = new cloudDatabase.DatabaseQuery(order_list);
    condition.equalTo("order_code",this.orderCode!)
    let listData = await databaseZone.query(condition);
    let json = JSON.stringify(listData)
    let data1:OrderList[]= JSON.parse(json)
    this.orderInfo=data1[0]

查询出来数据之后,我们拿到返回值中的order_product_id字段,根据它再次进行查询,拿到对应的商品列表

  @State orderInfo:OrderList|null=null

let 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)

都查询出来之后我们开始进行页面数据的绘制和数据的填充

build() {
    if (this.flag){
      Column(){
        CommonTopBar({ title: "订单详情", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})
        Scroll(){
          Column({space:10}) {
            Column({space:15}){
              Text("买家已付款")
                .fontSize(20)
                .width('100%')
                .textAlign(TextAlign.Center)
                .fontColor(Color.Black)
                .fontWeight(FontWeight.Bold)

              Text("您买的商品已经安排了,商家即将发货")
                .fontSize(16)
                .fontColor(Color.Black)
                .width('100%')
                .textAlign(TextAlign.Center)
            }.width('100%')
            .padding(15)
            .backgroundColor("#fff3574a")
            Divider().width('100%').height(5)
              .color("#e6e6e6")
            Column(){
              Row({space:20}){
                Image($r('app.media.order_location'))
                  .height(20)
                  .width(20)
                Column(){
                  Row(){
                    Text(this.orderInfo?.nickname)
                      .fontColor(Color.Black)
                      .fontSize(16)
                      .fontWeight(FontWeight.Bold)
                    Text(this.orderInfo?.phone)
                      .fontColor(Color.Black)
                      .fontSize(16)
                      .fontWeight(FontWeight.Bold)
                      .margin({left:20})
                  }

                  Text(this.orderInfo?.address)
                    .fontColor(Color.Black)
                    .fontSize(16)
                    .margin({top:10})
                }
                .padding(10)
                .alignItems(HorizontalAlign.Start)
                .width('100%')

              }
            }
            .padding(10)
            .alignItems(HorizontalAlign.Start)
            .width('100%')
            Divider().width('100%').height(0.8)
              .color("#e6e6e6")
            List({scroller:this.scroller}){
              ForEach(this.productList,(item:OrderProductList,index:number)=>{
                ListItem(){
                  Column(){
                    Row() {
                      Row({ space: 10 }) {
                        Image(item.img)
                          .height(70)
                          .width(70)
                          .margin({ left: 10 })
                          .borderRadius(10)
                        Column({ space: 5 }) {
                          Text(item.name)
                            .fontColor(Color.Black)
                            .fontSize(14)

                          Text(item.spec)
                            .fontColor(Color.Grey)
                            .fontSize(14)

                          Row() {
                            Text() {
                              Span("¥ ")
                                .fontSize(14)
                                .fontColor(Color.Red)
                              Span(item.price + "")
                                .fontSize(16)
                                .fontColor(Color.Red)
                            }

                            Text("¥" + item.originalPrice + "")
                              .fontColor('#999')
                              .decoration({
                                type: TextDecorationType.LineThrough,
                                color: Color.Gray
                              })
                              .fontSize(14)
                              .margin({ left: 10 })

                          }
                          .alignItems(VerticalAlign.Bottom)


                          Text("已选:" + item.buyAmount)
                            .fontColor(Color.Black)
                            .fontColor(Color.Gray)
                            .fontSize(12)
                        }
                        .alignItems(HorizontalAlign.Start)

                      }

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


                      Blank()

                      Text("¥ " + item.price*item.buyAmount)
                        .fontColor(Color.Black)
                        .fontSize(14)
                    }
                    .padding(10)
                    .width('100%')
                    .alignItems(VerticalAlign.Top)
                    .justifyContent(FlexAlign.SpaceBetween)


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

                  }



                }
              })

            }
            .height('auto')


            Row(){
              Text()
              Blank()
              Text() {
                Span("合计:")
                  .fontSize(16)
                  .fontColor(Color.Black)
                Span("¥ ")
                  .fontSize(10)
                  .fontColor(Color.Red)
                Span(this.price()+"")
                  .fontSize(16)
                  .fontColor(Color.Red)
              }
            }
            .padding(10)
            .width('100%')
            .justifyContent(FlexAlign.SpaceBetween)
            Divider().width('100%').height(5)
              .color("#e6e6e6")



            Text("订单信息")
              .fontSize(18)
              .fontColor(Color.Black)
              .fontWeight(FontWeight.Bold)
              .margin({left:15})
            Divider().width('100%').height(5)
              .color("#e6e6e6")
            Row(){
              Text("订单编号:")
                .fontSize(16)
                .fontColor(Color.Black)
              Blank()
              Text(this.orderInfo?.order_code)
                .fontColor(Color.Black)
                .fontSize(14)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .padding(10)

            Divider().width('100%').height(0.8)
              .color("#e6e6e6")

            Row(){
              Text("订单备注:")
                .fontSize(16)
                .fontColor(Color.Black)
              Blank()
              Text(this.orderInfo?.order_remark!=''&&this.orderInfo?.order_remark!=null?this.orderInfo?.order_remark:"无")
                .fontColor(Color.Black)
                .fontSize(14)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .padding(10)
            Divider().width('100%').height(0.8)
              .color("#e6e6e6")
            Row(){
              Text("付款方式:")
                .fontSize(16)
                .fontColor(Color.Black)
              Blank()
              Text("线上支付")
                .fontSize(16)
                .fontColor(Color.Black)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .padding(10)
            Divider().width('100%').height(0.8)
              .color("#e6e6e6")
            Row(){
              Text("创建时间:")
                .fontSize(16)
                .fontColor(Color.Black)
              Blank()
              Text(this.orderInfo?.order_create_time)
                .fontColor(Color.Black)
                .fontSize(14)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .padding(10)
            Divider().width('100%').height(0.8)
              .color("#e6e6e6")
            Row(){
              Text("付款时间:")
                .fontSize(16)
                .fontColor(Color.Black)
              Blank()
              Text(this.orderInfo?.order_pay_time)
                .fontColor(Color.Black)
                .fontSize(14)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .padding(10)

            Divider().width('100%').height(0.8)
              .color("#e6e6e6")
              .visibility(this.orderInfo?.order_over_time!=''?Visibility.Visible:Visibility.None)

            Row(){
              Text("完成时间:")
                .fontSize(16)
                .fontColor(Color.Black)
              Blank()
              Text(this.orderInfo?.order_over_time)
                .fontColor(Color.Black)
                .fontSize(14)
            }
            .visibility(this.orderInfo?.order_over_time!=null&&this.orderInfo.order_over_time!=''?Visibility.Visible:Visibility.None)
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')
            .padding(10)

          }
          .margin({bottom:50})
          .backgroundColor(Color.White)
          .alignItems(HorizontalAlign.Start)
        }
        .height('100%')
        .width('100%')
      }

    }


  }
    price():number{

    let  number=0
    for (let i = 0; i <this.productList.length ; i++) {
      number+=this.productList[i].buyAmount*this.productList[i].price
    }
    return  number
  }

到这里我们就实现了订单详情的展示

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消