shopcar.js 6.4 KB
// pages/index/shopcar/shopcar.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    moudel: false,
    state: false,
    carts: [],
    num: 0,
    totalprice: 0, //总价
    allselected: false, //全选
    goods_id: [],
    goods_num: [],
    viewnum: '',
    totalnum: 0,
    popupshow: false,
    shop_id:'',//商品id
  },

  //购物车空跳转
  goShopping() {
    wx.reLaunch({
      url: '../index/index',
    })
  },

  //购物车商品列表
  goodsList() {
    let that = this
    let url = 'shop/shopList'
    let params = {
      users_id: app.globalData.users_id
    }
    app.post(url, params).then((res) => {
      if (res.data.code == 1) {
        this.setData({
          carts: res.data.data,
        })
      }else if(res.data.code==0){
        this.setData({
          carts:[]
        })
      }
      console.log(this.data.carts)
    })
  },

  //选中购物车商品
  selectList(e) {
    var index = e.currentTarget.dataset.index
    var carts = this.data.carts
    var totalnum = this.data.totalnum
    let selected = carts[index].selected
    if (selected) {
      carts[index].selected = false
      totalnum = 0
    } else {
      carts[index].selected = true
      totalnum = totalnum + 1
    }
    this.setData({
      carts: carts,
      totalnum: totalnum
    })
    this.getTotalPrice()
  },

  //购物车全选 
  chooseAll() {
    var totalnum = this.data.totalnum
    var allselected = this.data.allselected
    if (allselected) {
      allselected = false
    } else {
      allselected = true
    }
    var carts = this.data.carts
    for (var i = 0; i < carts.length; i++) {
      carts[i].selected = allselected
      if (carts[i].selected == true) {
        totalnum += 1
      } else {
        totalnum = 0
      }
    }
    this.setData({
      allselected: allselected,
      carts: carts,
      totalnum: totalnum
    })
    this.getTotalPrice()
  },

  //数量加
  addCount(e) {
    const index = e.currentTarget.dataset.index
    var shop_id = e.currentTarget.dataset.id
    var carts = this.data.carts
    var num = carts[index].num
    var totalnum = carts[index].goods_num
    let url = 'shop/addGoodsNum'
    let params = {
      shop_id: shop_id
    }
    app.post(url, params).then((res) => {
      if (res.data.code == 1) {
        if (carts[index].num > carts[index].goods_num) {
          wx.showToast({
            title: '库存不足',
            icon: 'none'
          })
          carts[index].num = carts[index].goods_num
        } else {
          num = parseInt(num) + 1;
          carts[index].num = num
          if (carts[index].num > carts[index].goods_num) {
            wx.showToast({
              title: '库存不足',
              icon: 'none'
            })
            carts[index].num = carts[index].goods_num
          }
        }
        this.setData({
          carts: carts
        })
        this.getTotalPrice()
      }
    })
  },


  //数量减
  minusCount(e) {
    const index = e.currentTarget.dataset.index;
    var shop_id = e.currentTarget.dataset.id
    var carts = this.data.carts
    var num = carts[index].num
    var totalnum = carts[index].goods_num
    if (num < 1) {
      wx.showToast({
        title: '请输入正确商品数量',
        icon: 'none',
      })
      return false
    }
    let url = 'shop/minGoodsNum'
    let params = {
      shop_id: shop_id
    }
    app.post(url, params).then((res) => {
      if (num > 0) {
        num = num - 1;
        carts[index].num = num;
        if (num < 1) {
          wx.showToast({
            title: '请输入正确商品数量',
            icon: 'none',
          })
          return false
        }
      }
      this.setData({
        carts: carts
      })
      this.getTotalPrice()
    })
  },

  //计算总价
  getTotalPrice() {
    var carts = this.data.carts;
    var totalprice = 0;
    for (var i = 0; i < carts.length; i++) {
      if (carts[i].selected) {
        totalprice += carts[i].num * carts[i].price
      }
    }
    this.setData({
      carts: carts,
      totalprice: totalprice.toFixed(2)
    })
  },

  //
  Delete(e) {
    this.setData({
      popupshow: true,
      shop_id:e.currentTarget.dataset.id
    })
  },

  //
  cancleDel() {
    this.setData({
      popupshow: false
    })
  },

  //批量删除商品
  batchDelete(e) {
    let that = this
    let url = 'shop/deleteShopGoods'
    let params = {
      shop_id:this.data.shop_id
    }
    app.post(url, params).then((res) => {
      if (res.data.code == 1) {
        that.setData({
          popupshow: false
        }) 
        that.goodsList()
        console.log(this.data.carts)
      }
    })
   
  },

  //去付款跳转
  goPay(e) {
    var price = this.data.totalprice
    var carts = this.data.carts
    var goods_id = [];
    var goods_num = [];
    // var inventory=
    for (var i = 0; i < carts.length; i++) {
      if (carts[i].selected) {
        goods_id.push(carts[i].goods_id);
        goods_num.push(carts[i].num)
        if (carts[i].goods_num == 0) {
          wx.showToast({
            title: '商品库存不足',
            icon: 'none',
          })
        }
      }
    }

    this.setData({
      goods_id: goods_id,
      goods_num: goods_num
    })

    if (this.data.totalnum != 0) {
      wx.navigateTo({
        url: '../shopcar/confirmOrder/confirmOrder?goods_id=' + goods_id + '&goods_num=' + goods_num + '&price=' + price,
      })
    } else {
      wx.showToast({
        title: '请选择要购买的商品',
        icon: 'none',
      })
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    this.getTotalPrice()
    this.goodsList()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    this.goodsList(),
    console.log(this.data.carts)
      this.setData({
        allselected: false, //全选
        totalprice: 0,
        totalnum: 0
      })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})