黑马优购小程序项目详解

黑马优购小程序项目详解

1.准备工作

先把wx.request封装好。然后配置路由。把底部的导航配置出来。就是我们的首页、分类、购物车、还有我的,在全局的app.json中配置。

{
  "pages":[
    "pages/home/home",
    "pages/search/search",
    "pages/my/my",
    "pages/list/list",
    "pages/index/index",
    "pages/logs/logs",
    "pages/goodslist/goodslist",
    "pages/goods/goods",
    "pages/shopsc/shopsc",
    "pages/zhifu/zhifu",
    "pages/shopcar/shopcar",
    "pages/auth/auth",
    "pages/feedback/feedback"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#eb4450",
    "navigationBarTitleText": "黑马优购",
    "navigationBarTextStyle":"white"
  },
  "tabBar": {
    "list": [{
      "pagePath": "pages/home/home",
      "text": "首页",
      "iconPath": "./icons/home.png",
      "selectedIconPath": "./icons/home-o.png"
    },
    {
      "pagePath": "pages/list/list",
      "text": "列表",
      "iconPath": "./icons/category.png",
      "selectedIconPath": "./icons/category-o.png"
    },
    {
      "pagePath": "pages/shopcar/shopcar",
      "text": "购物车",
      "iconPath": "./icons/cart.png",
      "selectedIconPath": "./icons/cart-o.png"
    },{
      "pagePath": "pages/my/my",
      "text": "我的",
      "iconPath": "./icons/my.png",
      "selectedIconPath": "./icons/my-o.png"
    }]
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

2.封装公共组件

在根目录下创建components文件夹作为公共组件存放的地方,将头部等常用组件封装进去。

3.请求数据

在封装好的request文件里面的http 文件中创建请求函数导入页面 详见wx.request
在页面上请求到数据之后就将数据渲染到页面上

4.页面渲染

4.1分类页tab切换

在这里插入图片描述
列表页面,我们左边导航和右边数据是外部盒子的一个滚动条,而不是整个页面的,左边和右边的滚动条是不互相影响的,因此我们使用了一个小程序内置的标签scroll-view 给这个标签加上scroll-y的属性就能实现滚动的效果。

  <scroll-view scroll-y></scroll-view>  
  // 作为一个盒子使用,给定一个高度或宽度,让里面的内容在这个区域出现滚动条
  // scroll-y   y轴开启滚动条
  // scroll-x   x轴开启滚动条

当点击左边盒子的时候获取到对应的数据来渲染右边

  chanege(e){
    const ii=e.currentTarget.dataset.index
    this.setData({
      liindex:ii,
      right:this.data.tab[ii].children
    })
  },

点击右边商品的时候获取到对应的商品id来进行跳转到对应的页面之后获取对应的数据

  fn1(e){
    const id=e.currentTarget.dataset.cid
    wx.navigateTo({
      url: '/pages/goodslist/goodslist?cid='+id,
    })
  },

4.2商品列表页

在这里插入图片描述
关于
商品列表上拉加载更多,下拉刷新
点击商品跳转到对应的详情页

  fn1(e){
    console.log(e.currentTarget.dataset.index);
    let i = e.currentTarget.dataset.index
    wx.navigateTo({
      url: '/pages/goods/goods?goods_id='+i,
    })
  },

4.3 商品详情页

在这里插入图片描述
在进入页面的时候,通过接口获取到数据,然后将数据渲染到页面上

小程序分享,收藏,客服功能
加入购物车

加入购物车的时候进行判断,判断当前商品是否已经在购物车里面,在的话就让该商品的数量+1,不在就将该商品添加至购物车的本地存储中

  add() {
    let car = wx.getStorageSync("car") || [];
    let index = car.findIndex(v => v.goods_id === this.data.list.goods_id);
    if (index === -1) {
      this.data.list.num = 1;
      this.data.list.check = false;
      car.push(this.data.list);
      wx.setStorageSync("car", car);
    } else {
      car[index].num++;
    }
    wx.setStorageSync("car", car);
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      mask: true
    });
  },

购物车

在这里插入图片描述
购物车全选,当点击全选的时候,判断全选按钮点击后的状态,来将上面的数据来推进新的数组里面,并计算总价

  myChange1(e) {
    var ckk=[];
    if(e.detail.value.length==1){
      this.data.list.forEach((item,index)=>{
        item.check=true
        ckk.push(item.goods_id)
      })
      this.setData({
        ckall:true,
        clist:ckk,
        list:this.data.list
      })
      this.jisuan()
    }else{
      this.data.list.forEach((item,index)=>{
        item.check=false
      })
      this.setData({
        ckall:false,
        clist:ckk,
        list:this.data.list
      })
      this.jisuan()
    }
  },

交互,当点击单选的时候,判断已被选中的长度是否跟购物车总长度一致来决定是否全选。

  myChange(e) {
    this.setData({
      clist: e.detail.value
    })
    if (this.data.clist.length == this.data.list.length) {
      this.setData({
        ckall: true
      })
    } else {
      this.setData({
        ckall: false
      })
    }
    this.jisuan()
  },

计算总价 在已选中的数组中进行计算

  jisuan() {
    var aa = 0;
    this.data.clist.forEach((item, index) => {
      this.data.list.forEach((it, i) => {
        if (it.goods_id == item) {
          aa += it.goods_price * it.num
          if (this.data.list[i].check == false) {
            this.data.list[i].check = true
          } else {
            this.data.list[i].check = false
          }
          wx.setStorageSync("car", this.data.list);
        }
      })
    })
    this.setData({
      sum: aa
    })
  },

商品加加减减
当点击减号的时候判断当前商品的数量是否大于1,大于一的话就让当前商品的数量-1,不大于一就将该商品删除掉,点击加号让对应商品的数量++就可以了

  jian(e) {
    var i = e.currentTarget.dataset.index;
    let car = this.data.list
    console.log(car);
    if (car[i].num > 1) {
      car[i].num--
      wx.setStorageSync("car", car);
      this.setData({
        list: car
      })
      this.jisuan()
    } else {
      car.splice(i, 1)
      wx.setStorageSync("car", car);
      this.setData({
        list: car
      })
      this.jisuan()
      if(this.data.list.length!=0){
        this.setData({
          show:true
        })
      }else{
        this.setData({
          show:false
        })
      }
    }
  },
  jia(e) {
    var i = e.currentTarget.dataset.index;
    let car = this.data.list
    console.log(this.data.list[i].check);
    car[i].num++
    wx.setStorageSync("car", car);
    this.setData({
      list: car
    })
    console.log(this.data.list[i].check);

    this.jisuan()
  },

微信支付流程

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app是一种基于Vue.js的跨平台开发框架,可以用于开发微信小程序、H5、App等多个平台的应用。《优购商城项目》是一个基于uni-app开发的微信小程序商城项目。 要实现《优购商城项目》,首先需要配置uni-app的开发环境。可以使用HBuilderX作为开发工具,它提供了丰富的功能和插件来辅助开发。然后需要获取微信小程序的APPID,这是小程序的身份证明,是唯一的。可以在微信开放平台上注册一个小程序并获取到APPID。 接下来,可以在HBuilderX中创建一个新的uni-app项目。在菜单栏中选择文件 -> 项目 -> 新建选择uni-app,填写项目名称并指定项目创建的目录。然后选择微信小程序作为目标平台,并填写小程序的APPID。这样就可以开始在uni-app上开发《优购商城项目》了。 在开发过程中,可以使用uni-app提供的丰富组件和API来实现商城功能,比如商品展示、购物车、订单管理等。可以使用uni-app提供的跨平台能力,一次开发即可在多个平台上运行。在开发完成后,可以将项目打包成微信小程序并在微信开发者工具中进行调试和发布。 通过以上步骤,就可以利用uni-app开发微信小程序实现《优购商城项目》了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信小程序--优购商城项目(1)](https://blog.csdn.net/ljn1046016768/article/details/124043924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [uniapp微信小程序实现《优购商城项目》](https://blog.csdn.net/qq_64102392/article/details/131212823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值