《仿盒马》app开发技术分享-- 回收订单页功能完善(45)

简介: 上一节我们实现了订单的待取件、已取消状态展示,并且成功实现了修改订单状态后的列表刷新,实现了云端数据的修改,这一节我们来实现订单页剩下的两个板块的业务逻辑,分别是运输中、已完成状态下的列表展示以及订单状态的修改

技术栈

Appgallery connect

开发准备

上一节我们实现了订单的待取件、已取消状态展示,并且成功实现了修改订单状态后的列表刷新,实现了云端数据的修改,这一节我们来实现订单页剩下的两个板块的业务逻辑,分别是运输中、已完成状态下的列表展示以及订单状态的修改

功能分析

要实现运输中、已完成订单状态我们分别要先实现tab切换时组件刷新的方法,根据对应的index来实现当前页面的刷新,然后在刷新方法中请求云数据库的数据展示到页面上,通过userid与ordertype去筛选对应的订单,取出符合要求的数据,在不同的状态栏中我们还需要实现修改当前点击订单的状态,实现本地列表的更新和云端订单状态的修改

代码实现

首先实现运输中页面

@State currentIndexCheck: number = 2
  @Prop @Watch("onRefresh") currentIndex:number=0

  async onRefresh(): Promise<void> {
   
    if (this.currentIndexCheck==this.currentIndex) {
   
      let databaseZone = cloudDatabase.zone('default');
      let condition = new cloudDatabase.DatabaseQuery(recycle_info);
      condition.equalTo("user_id",this.user?.user_id).and().equalTo("order_type",2)
      let listData = await databaseZone.query(condition);
      let json = JSON.stringify(listData)
      let data1:RecycleInfo[]= JSON.parse(json)
      this.orderList=data1
      this.flag=true
    }
  }

在这里通过刷新方法来请求云端数据根据条件查询拿到对应的数据集合,展示到列表中

  List({
   space:10}){
   
          ForEach(this.orderList,(item:RecycleInfo,index:number)=>{
   
            ListItem(){
   
              Column({
   space:10}){
   
                Row(){
   
                  Text("订单编号:"+item.express_code)
                    .fontColor(Color.Black)
                    .fontSize(14)

                  Text("运输中")
                    .fontColor(Color.Black)
                    .fontSize(14)
                }
                .justifyContent(FlexAlign.SpaceBetween)
                .width('100%')

                Row({
   space:10}){
   
                  Image($r('app.media.background'))
                    .height(40)
                    .width(40)
                    .borderRadius(5)

                  Column({
   space:10}){
   
                    Text("回收品类  衣帽鞋包")
                      .fontColor(Color.Black)
                      .fontSize(14)


                    Text("预约时间  "+item.create_time)
                      .fontColor(Color.Black)
                      .fontSize(14)

                    Text("联系方式  "+item.phone)
                      .fontColor(Color.Black)
                      .fontSize(14)

                    Text("取件地址  "+item.address)
                      .fontColor(Color.Black)
                      .fontSize(14)

                  }.alignItems(HorizontalAlign.Start)
                }
                .margin({
   top:10})
                .alignItems(VerticalAlign.Top)
                .width('100%')
                .justifyContent(FlexAlign.Start)

                Row({
   space:10}){
   
                  Text()
                  Blank()
                  Text("订单完成")
                    .fontColor(Color.Black)
                    .fontSize(12)
                    .padding(5)
                    .borderRadius(10)
                    .backgroundColor(Color.Pink)

                }
                .width('100%')


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

然后在订单中通过点击订单完成按钮完成对订单状态的修改

 Text("订单完成")
                    .fontColor(Color.Black)
                    .fontSize(12)
                    .padding(5)
                    .borderRadius(10)
                    .backgroundColor(Color.Pink)
                    .onClick(async ()=>{
   
                      let data=new recycle_info()
                      data.id=item.id
                      data.user_id=item.user_id
                      data.nike_name=item.nike_name
                      data.phone=item.phone
                      data.address=item.address
                      data.day=item.day
                      data.start_time=item.start_time
                      data.end_time=item.end_time
                      data.msg=item.msg
                      data.weight_id=item.weight_id
                      data.create_time=item.create_time
                      data.express_code=item.express_code
                      data.express_people=item.express_people
                      data.express_company=item.express_company
                      data.order_type=3
                      data.logistics_id=item.logistics_id
                      let num = await databaseZone.upsert(data);
                      hilog.info(0x0000, 'testTag', `Succeeded in upserting data, result: ${
   num}`);
                      if (num>0) {
   
                        this.onRefresh()
                        showToast("订单已完成")
                      }
                    })

然后我们的已完成订单页面,我们如法炮制

 @State currentIndexCheck: number = 3
  @Prop @Watch("onRefresh") currentIndex:number=0

  async onRefresh(): Promise<void> {
   
    if (this.currentIndexCheck==this.currentIndex) {
   
      let databaseZone = cloudDatabase.zone('default');
      let condition = new cloudDatabase.DatabaseQuery(recycle_info);
      condition.equalTo("user_id",this.user?.user_id).and().equalTo("order_type",3)
      let listData = await databaseZone.query(condition);
      let json = JSON.stringify(listData)
      let data1:RecycleInfo[]= JSON.parse(json)
      this.orderList=data1
      this.flag=true
    }
  }

因为已完成页面不需要修改订单状态,仅需要展示,所以数据查询出来之后直接展示到list中即可

```c
List({space:10}){
ForEach(this.orderList,(item:RecycleInfo,index:number)=>{
ListItem(){
Column({space:10}){
Row(){
Text("订单编号:"+item.express_code)
.fontColor(Color.Black)
.fontSize(14)

              Text("已完成")
                .fontColor(Color.Black)
                .fontSize(14)
            }
            .justifyContent(FlexAlign.SpaceBetween)
            .width('100%')

            Row({space:10}){
              Image($r('app.media.background'))
                .height(40)
                .width(40)
                .borderRadius(5)

              Column({space:10}){
                Text("回收品类  衣帽鞋包")
                  .fontColor(Color.Black)
                  .fontSize(14)


                Text("预约时间  "+item.create_time)
                  .fontColor(Color.Black)
                  .fontSize(14)

                Text("联系方式  "+item.phone)
                  .fontColor(Color.Black)
                  .fontSize(14)

                Text("取件地址  "+item.address)
                  .fontColor(Color.Black)
                  .fontSize(14)

              }.alignItems(HorizontalAlign.Start)
            }
            .margin({top:10})
            .alignItems(VerticalAlign.Top)
            .width('100%')
            .justifyContent(FlexAlign.Start)

            Row({space:10}){
              Text()
              Blank()
            }
            .width('100%')


          }
          .padding(10)
          .backgroundColor(Color.White)
          .borderRadius(10)
          .width('100%')
          .justifyContent(FlexAlign.SpaceBetween)
        }
      })
    }
    .padding(10)
相关文章
|
11月前
|
小程序 视频直播 数据安全/隐私保护
如何在1v1视频直播交友APP中实现防录屏防截屏功能?
婚恋交友市场快速增长,1v1社交应用海外投放增86.49%,中东、东南亚及北美需求旺盛。用户偏好私密高效交流,国内“云相亲”兴起。开发需合规备案、实名认证,并防范诈骗。本文详解原生APP防录屏技术:Android通过MediaProjection检测,iOS监听UIScreen状态,结合动态水印、远程销毁等增强防护,平衡体验与安全。
|
11月前
|
JavaScript API 开发工具
如何在原生App中调用Uniapp的原生功能?
如何在原生App中调用Uniapp的原生功能?
1167 139
|
12月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
348 0
|
11月前
|
存储 自然语言处理 算法
参照Yalla、Hawa等主流APP核心功能,开发一款受欢迎的海外语聊需要从哪些方面入手
海外语聊APP开发需结合Yalla、Hawa等主流产品,聚焦多语言支持、实时音视频、社交互动与安全合规。兼顾技术架构、本地化运营与法律风险,避免劣质成品代码,平衡创新与成本,打造差异化出海产品。(239字)
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
817 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
存储 Java PHP
轻量化短视频电商直播带货APP源码全解析:核心功能与设计流程​
在电商直播热潮下,开发专属直播带货APP成为抢占市场关键。本文详解原生开发轻量化APP的核心功能与全流程设计,涵盖用户登录、商品浏览、直播互动、购物车、订单及售后功能,并介绍安卓端Java、苹果端Object-C、后台PHP的技术实现,助力打造高效优质的直播电商平台。
|
Web App开发 编解码 算法
布谷一对一直播源码开发:阿里云视频语音通话社交交友App的必备功能
在当今移动社交领域,一对一视频和语音通话功能已成为用户期待的基础配置。从熟人社交到陌生人交友,从专业咨询到情感陪伴,实时音视频互动能力直接决定了社交App的用户留存和市场竞争力。山东布谷科技将深入探讨一对一直播源码开发高质量一对一视频和语音通话功能的关键要素和技术实现方案。
布谷一对一直播源码开发:阿里云视频语音通话社交交友App的必备功能
|
存储 移动开发 监控
App Trace功能实战:一键拉起、快速安装与免提写邀请码的应用实践
App Trace系统通过一键拉起、快速安装和免提写邀请码三大功能,显著提升用户转化率、安装成功率和邀请注册率。结合深度技术实现与优化,助力公司用户增长,成为移动端核心基础设施。
《仿盒马》app开发技术分享-- 扫一扫功能(35)
随着app的逐渐完善,我们现在需要在细节处做更多的打磨,在首页我们添加了很多静态的按钮和组件,现在我们开始对这些组件进行功能的添加,这次首先实现的是首页头部的扫一扫功能,扫一扫我们实现扫码后跳转商品详情页
272 0
|
存储 数据库
《仿盒马》app开发技术分享-- 购物车功能完善(14)
上一节我们实现了购物车商品列表的状态切换,已添加商品数量的增减,已添加商品滑动删除,已添加商品在选中情况下的价格计算。这一节我们在这些功能的基础上实现云端记录,因为我们现在只有数据的查询是从云端获取的,其他的操作虽然都实现了相对应的功能,但是当我们操作完,关闭app,再打开不会有对应的记录,有的同学可能会说,那我们把数据用首选项或者数据库的形式存储就可以了吧? 那如果我更换了另一个设备那这些添加的数据是不是就又不能使用了?所以我们的每个操作,最好都是提交到云端,这样我们在其他设备,在退出应用,切换账号这些情况下都能很好的保存我们操作后的购物车状态。
214 0

热门文章

最新文章