杀鸡焉用牛刀 发表于 2024-7-16 07:33:17

鸿蒙购物体系——首页、分类、购物车、我的

本次期末计划的购物软件是使用ArkTS语言所写的。
该软件主要是由四个部门组成,分别是
首页:

首页界面是将数据库中的全部内容举行展示,列表中的每一条数据都可举行点击事件并将该条数据的具体内容举行展示(顶部的搜索框临时只可以或许举行页面的跳转功能,无法举行对商品的搜索,还在优化中)。
https://img-blog.csdnimg.cn/direct/0cbb2039584946bc856c980f804e8bee.png
https://img-blog.csdnimg.cn/direct/a04d3a027afc4ba1a94fff0a3557a543.png
分类:

在此页面中是将数据库中的内容举行分类展示
https://img-blog.csdnimg.cn/direct/1a679566bf84426aaeb948dca77ed5e5.png
购物车:

在商品具体界面可以将商品加入到购物车中。在购物车界面中可以将页面中的商品一键清空。(临时因为能力有限尚未实现合计以及付出功能,在未来会进一步的完善此功能)
https://img-blog.csdnimg.cn/direct/e43b0b6c54a942d98d632bfcef1c6884.png
我的:

在这个界面中,昵称可以根据差异用户登录的账号举行改变。在中心的列表中仅仅只有修改密码,观看视频和退出登录、商铺列表是可以举行点击事件,其他图标只是做了静态页面。
https://img-blog.csdnimg.cn/direct/979d66cb1ce9401185168a42f657d8c1.png
以下是具体使用到的一些代码:
框架:

struct Index {
@State currentIndex: number = 0;   //表示索引页
private tabsController: TabsController = new TabsController();

@Builder TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) {
    Column() {...}
    .width('100%')
    .height(50)
    .justifyContent(FlexAlign.Center)
    .onClick(() => {...})
}

build() {
    Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {
      TabContent() {
      Page1()
      }
      .tabBar(this.TabBuilder('首页', 0, $r('app.media.shouyedianji'), $r('app.media.shouye')))

      TabContent(){
      Column(){...}
          .barMode(BarMode.Scrollable)
      }
      .width('100%')
      }
      .tabBar(this.TabBuilder('分类', 1, $r('app.media.fenleidianji'), $r('app.media.fenlei')))

      TabContent() {
      Gouwuche()
      }
      .tabBar(this.TabBuilder('购物车', 2, $r('app.media.gouwuchedianji'), $r('app.media.gouwuche')))

      TabContent() {
      wode()
      }
      .tabBar(this.TabBuilder('我的', 3, $r('app.media.mydianji'), $r('app.media.my')))

    }
    .scrollable(false)
    .barWidth('100%')
    .barHeight(50)
    .onChange((index: number) => {
      this.currentIndex = index;
    })
}
// 转场动画使用系统提供的多种默认效果(平移、缩放、透明度等)
pageTransition() {...}
} 我的:

struct wode{
@State message: Users = router.getParams()?.['data']
@Builder OrderItem(icon: Resource, name: string) {
    Column() {
      Image(icon).width(30).height(30)
      Text(name).margin({ top: 3 }).fontSize(11)
    }.layoutWeight(1)
}

@Builder MyItem(icon: Resource, name: string, isShowLine = true) {
    Column() {
      Row() {
      Image(icon).width(20).height(20)
      Text(name).fontSize(14).margin({ left: 10 })
      Blank()
      Image($r('app.media.arrow')).width(12).height(18)
      }.width('100%').padding(15)

      if (isShowLine) {
      Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
      }
    }
}

@Builder MyItem1(icon: Resource, name: string, isShowLine = true) {
    Column() {
      Row() {
      Image(icon).width(20).height(20)
      Text(name).fontSize(14).margin({ left: 10 })
      Blank()
      Image($r('app.media.arrow')).width(12).height(18)
      }
      .width('100%')
      .padding(15)

      if (isShowLine) {
      Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
      }
    }
    .onClick(() => {
      router.pushUrl({
      url: 'pages/XiugaiXinxi',
      })
    })
}

@Builder MyItem2(icon: Resource, name: string, isShowLine = true) {
    Column() {
      Row() {
      Image(icon).width(20).height(20)
      Text(name).fontSize(14).margin({ left: 10 })
      Blank()
      Image($r('app.media.arrow')).width(12).height(18)
      }
      .width('100%')
      .padding(15)

      if (isShowLine) {
      Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
      }
    }
    .onClick(() => {
      router.pushUrl({
      url: 'pages/login',
      })
    })
}

@Builder MyItem3(icon: Resource, name: string, isShowLine = true) {
    Column() {
      Row() {
      Image(icon).width(20).height(20)
      Text(name).fontSize(14).margin({ left: 10 })
      Blank()
      Image($r('app.media.arrow')).width(12).height(18)
      }
      .width('100%')
      .padding(15)

      if (isShowLine) {
      Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
      }
    }
    .onClick(() => {
      router.pushUrl({
      url: 'pages/dianpulist',
      })
    })
}

@Builder MyItem4(icon: Resource, name: string, isShowLine = true) {
    Column() {
      Row() {
      Image(icon).width(20).height(20)
      Text(name).fontSize(14).margin({ left: 10 })
      Blank()
      Image($r('app.media.arrow')).width(12).height(18)
      }
      .width('100%')
      .padding(15)

      if (isShowLine) {
      Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
      }
    }
    .onClick(() => {
      router.pushUrl({
      url: 'pages/view',
      })
    })
}

build(){
    //   标题部分
    Column(){
      Row(){
      Row({space:10}) {
          Image($r('app.media.xiamuAPP'))
            .width(80)
            .height(80)
            .borderRadius(50) // 添加圆弧效果
            .borderWidth(1)
            .margin({right:5})
          Blank()
          Column() {
            Text('昵称:' + globalThis.name)
            .margin({ left: 20 })
            .fontColor('#ff4e4949')
            .fontSize(30)
            Row() {
            Image($r('app.media.vip')).width(20).height(15)
            Text('会员VIII级').fontSize(20).fontColor('#fff4c42c')
            }
          }.margin({top:3})
          Blank()
          Image($r('app.media.arrow')).width(25).height(25)
          Blank()
      }
      .margin({top:30,left:50})
      }
      .width('100%')
      .height(200)
      .justifyContent(FlexAlign.Center)
      .backgroundImage('image/beijing.jpg')
      .backgroundImageSize(ImageSize.Cover)

      Column() {
      Row() {
          this.OrderItem($r('app.media.dfk'), '待付款')
          this.OrderItem($r('app.media.dfh'), '待发货')
          this.OrderItem($r('app.media.dsh'), '待收货')
          this.OrderItem($r('app.media.dpj'), '待评价')
          this.OrderItem($r('app.media.tksh'), '退款/售后')
      }.width('100%').backgroundColor(Color.White)
      .borderRadius(10).padding({ top: 20, bottom: 20 })

      Column() {
          this.MyItem($r('app.media.qbdd'), '全部订单')
          this.MyItem($r('app.media.dzgl'), '收货地址');
          this.MyItem($r('app.media.wdsc'), '收藏管理');
          this.MyItem3($r('app.media.spgl'), '商铺列表');
          this.MyItem($r('app.media.yjfk'), '意见反馈');
          this.MyItem4($r('app.media.video'), '精选视频');
          this.MyItem1($r('app.media.xiugaixinxi'), '修改密码');
          this.MyItem2($r('app.media.tuichudenglu'), '退出登录', false);
      }
      .width('100%')
      .backgroundColor(Color.White)
      .borderRadius(10)
      .margin({ top: 10 })
      .padding({ top: 20, bottom: 20 })
      }.width('100%').padding(10)
    }
    .alignItems(HorizontalAlign.Start)
    .width('100%')
    .height('100%')
}
} 具体代码如下连接:
https://gitee.com/diligence---pass-every-exam/harmony-os.git
欢迎各人一起讨论,修改和增补代码中的不敷之处↖(^ω^)↗

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 鸿蒙购物体系——首页、分类、购物车、我的