const app = getApp();
Component({
  options: {
    addGlobalClass: true,
    multipleSlots: true
  },
  lifetimes: {
    attached() {
      let shopCartData = app.globalData.shopCart
      var amount = 0
      if (shopCartData.length > 0) {
        shopCartData.forEach(it => {
          if (it.shopId == this.properties.shopId) {
            this.data.shopCart = this.data.shopCart.concat(it)
            amount += it.buyNum
          }
        })
      }
      this.setData({
        shopId: this.properties.shopId,
        shopCart: this.data.shopCart,
        buyAmount: amount
      })
    }
  },
  /**
   * 组件的对外属性
   */
  properties: {
    shopCart: {
      type: Array,
      default: []
    },
    goods: {
      type: Object,
      default: null
    },
    shopId: {
      type: String,
      default: '',
    },
    showBtn: {
      type: Boolean,
      default: true
    }
  },
  /**
   * 组件的初始数据
   */
  data: {
    shopCart: [],
    show: false,
    buyAmount: 0
  },
  /**
   * 组件的方法列表
   */
  methods: {
    //添加商品
    addCart(event) {
      var _self = this
      let goods = event.currentTarget.dataset.goods
      goods.buyNum = 0
      if (goods != null) {
        //判断是否存在
        var isExist = false
        for (var i = 0; i < _self.data.shopCart.length; ++i) {
          var it = _self.data.shopCart[i]
          if (it.goodsId == goods.goodsId) {
            //判断是否超出库存
            if (it.buyNum < goods.goodsTotal) {
              it.buyNum += 1
            } else {
              wx.showToast({
                title: '超出库存范围',
                icon: 'error'
              })
            }
            isExist = true
            break;
          }
        }
        if (!isExist) {
          //不存在
          goods.buyNum = 1
          _self.data.shopCart = _self.data.shopCart.concat(goods)
        }
        let amount = 0
        _self.data.shopCart.forEach(it => {
          amount += it.buyNum
        })
        _self.setData({
          shopCart: _self.data.shopCart,
          buyAmount: amount
        })
        app.globalData.shopCart = _self.data.shopCart
        this.triggerEvent('refreshShopCart')
      }
    },
    //显示购物车列表
    showCart() {
      let cart = {
        shopId: this.data.shopId,
        shopCart: this.data.shopCart
      }
      this.triggerEvent('showcart', cart)
    },
    //立即订购
    nowOrder(event) {
      if (this.data.shopCart.length > 0) {
        wx.navigateTo({
          url: '/pages/shop/product/affirmorder?shopId=' + this.data.shopId,
        })
      } else {
        wx.showToast({
          title: '购物车空空如也',
          icon: 'error'
        })
      }
    },
    onClose() {
      this.setData({
        show: false
      })
    },
    //外部添加商品
    listAddToCart(goods) {
      let _self = this
      goods.buyNum = 0
      if (goods != null) {
        //判断是否存在
        var isExist = false
        for (var i = 0; i < _self.data.shopCart.length; ++i) {
          var it = _self.data.shopCart[i]
          if (it.goodsId == goods.goodsId) {
            //判断是否超出库存
            if (it.buyNum < goods.goodsTotal) {
              it.buyNum += 1
            } else {
              wx.showToast({
                title: '超出库存范围',
                icon: 'error'
              })
            }
            isExist = true
            break;
          }
        }
        if (!isExist) {
          //不存在
          goods.buyNum = 1
          _self.data.shopCart = _self.data.shopCart.concat(goods)
        }
        let amount = 0
        _self.data.shopCart.forEach(it => {
          amount += it.buyNum
        })
        _self.setData({
          shopCart: _self.data.shopCart,
          buyAmount: amount
        })
        app.globalData.shopCart = _self.data.shopCart
      }
    },
    //移除商品
    listRemoveCart(goods) {
      let _self = this
      goods.buyNum = 0
      if (goods != null) {
        //判断是否存在
        var isExist = false
        for (var i = 0; i < _self.data.shopCart.length; ++i) {
          var it = _self.data.shopCart[i]
          if (it.goodsId == goods.goodsId) {
            //判断是否超出库存
            if (it.buyNum < goods.goodsTotal) {
              it.buyNum -= 1
            } else {
              wx.showToast({
                title: '超出库存范围',
                icon: 'error'
              })
            }
            isExist = true
            break;
          }
        }
        let amount = 0
        _self.data.shopCart.forEach(it => {
          amount += it.buyNum
        })
        _self.setData({
          shopCart: _self.data.shopCart,
          buyAmount: amount
        })
        if (amount == 0) {
          app.globalData.shopCart = []
          _self.setData({
            shopCart: []
          })
        } else {
          app.globalData.shopCart = _self.data.shopCart
        }
      }
    },
    //刷新
    refreshCart() {
      let shopCartData = app.globalData.shopCart
      this.setData({
        shopCart: []
      })
      var amount = 0
      if (shopCartData.length > 0) {
        shopCartData.forEach(it => {
          if (it.shopId == this.properties.shopId) {
            this.data.shopCart = this.data.shopCart.concat(it)
            amount += it.buyNum
          }
        })
      }
      this.setData({
        shopId: this.properties.shopId,
        shopCart: this.data.shopCart,
        buyAmount: amount
      })
    }
  }
})