// pages/category/index.js
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    CustomBar: app.globalData.CustomBar,
    productList: [],
    isRefreshing: false,
    currentPage: 1,
    totalSize: 0,
    shopId: '',
    isAddPage: false,
    isCatalogPage: false,
    activeNames: ['0'],
    baseImageUrl:  app.urls.baseImgUrl,
    currentCatalogId: '',
    curIndex: 0,
    active: 1,
    curGoodsList: [],
    contentHeight: app.globalData.windowHeight - app.globalData.CustomBar,
    isLoadMore: false,
    hasMore: true,
    isShowCart: false,
    shopCart: [],
    baseImg: app.urls.baseImgUrl,
  },
  /**
   * 切换类目
   */
  switchRightTap(e) {
    let curindex = parseInt(e.currentTarget.dataset.curindex);
    this.data.productList[curindex].goodsList = []
    this.setData({
      currentPage: 1,
      hasMore: true,
      isLoadMore: false,
      curIndex: curindex
    })
    let item = this.data.productList[curindex]
    this.getGoodsListByCId(item.categoryId)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      shopId: options.shopId,
      shopCart: app.globalData.shopCart
    })
    this.getShopCatalogList(this.data.shopId)
    this.selectComponent('#sCart').refreshCart()
  },
  //获取店铺所有商品类目
  getShopCatalogList(id) {
    let _self = this
    wx.showLoading({
      title: '加载中...',
    })
    app.restAjax.get(app.restAjax.path(app.apis.getShopCatalogList, [app.baseUrls.tradeUrl, id]), {}, {
      headers: {
        token: app.globalData.token
      }
    }, (code, data) => {
      wx.hideLoading({})
      _self.setData({
        isRefreshing: false
      })
      if (code == 200) {
        _self.buildDatas(data)
      }
    }, (code, error) => {
      wx.hideLoading({})
      if (error.msg) {
        app.dialog.msg(error.msg)
      } else {
        wx.showToast({
          title: '网络错误',
          icon: 'error'
        })
      }
    })
  },
  doAdd(e) {
    let key = e.currentTarget.dataset.key
    if ('chooseCatalog' == key) {
      wx.navigateTo({
        url: './choosecatalog?shopId=' + this.data.shopId,
      })
    } else {
      if (e.currentTarget.dataset.item) {
        wx.navigateTo({
          url: './addproduct?shopId=' + this.data.shopId + '&cataLogId=' + e.currentTarget.dataset.item.categoryId,
        })
      } else {
        wx.showToast({
          title: '请先添加类目',
          icon: 'error'
        })
      }
    }
  },
  manageGoods(e) {
    wx.navigateTo({
      url: '../../product/goodsdetail?shopId=' + e.currentTarget.dataset.item.shopId + '&goodsId=' + e.currentTarget.dataset.item.goodsId
    })
  },
  /**
   * 获取商品列表
   */
  getGoodsList(shopId) {
    wx.showLoading({
      title: '加载中...',
    })
    app.restAjax.get(app.restAjax.path(app.apis.getShopGoodsList, [app.baseUrls.tradeUrl, shopId]), {}, {
      headers: {
        token: app.globalData.token
      }
    }, (code, data) => {
      wx.hideLoading({})
      this.setData({
        isRefreshing: false
      })
      if (code == 200) {
        this.buildDatas(data)
      }
    }, (code, error) => {
      wx.hideLoading({})
      if (error.msg) {
        app.dialog.msg(error.msg)
      } else {
        wx.showToast({
          title: '网络错误',
          icon: 'error'
        })
      }
    })
  },
  //构建数据
  buildDatas(data) {
    let _self = this
    if (data.length > 0) {
      data.forEach(el => {
        el.goodsList = []
        _self.data.productList.push(el)
      })
      _self.setData({
        curIndex: 0,
        productList: _self.data.productList
      })
      _self.getGoodsListByCId(_self.data.productList[0].categoryId)
    }
  },
  //去除重复的
  unique(rows) {
    let temp = rows.concat()
    let tempList = []
    for (var i = 0; i < temp.length; i++) {
      for (var j = i + 1; j < temp.length; j++) {
        if (temp[i].categoryId == temp[j].categoryId) {
          temp.splice(j, 1);
          j--
        }
      }
    }
    temp.forEach(el => {
      tempList.push({
        name: el.categoryName,
        id: el.categoryId,
        goods: []
      })
    })
    return tempList
  },
  //刷新页面
  dorefreshList() {
    this.setData({
      currentPage: 1,
      isLoadMore: false,
      hasMore: true,
      productList: []
    })
    this.getShopCatalogList(this.data.shopId)
  },
  onShow() {
    if (this.data.isAddPage) {
      this.setData({
        isAddPage: false
      })
      this.dorefreshList()
    }
    this.selectComponent('#sCart').refreshCart()
  },
  //根据类目ID获取商品
  getGoodsListByCId(id) {
    let _self = this
    wx.showLoading({
      title: '加载中...',
    })
    app.restAjax.get(app.restAjax.path(app.apis.getGoodsByCatalogAndShop, [app.baseUrls.tradeUrl, id]), {
      page: _self.data.currentPage,
      shopId: _self.data.shopId
    }, {
      headers: {
        token: app.globalData.token
      }
    }, (code, data) => {
      wx.hideLoading({})
      _self.setData({
        isLoadMore: false
      })
      if (code == 200) {
        if (data.rows.length > 0) {
          data.rows.forEach(it => {
            it.buyNum = 0
          })
          data.rows.forEach(it => {
            //判断购物车是否存在该商品
            if (app.globalData.shopCart.length > 0) {
              app.globalData.shopCart.forEach(i => {
                if (i.goodsId == it.goodsId) {
                  it.buyNum = i.buyNum
                }
              })
            }
          })
          _self.data.productList.forEach(el => {
            if (el.categoryId == id) {
              el.goodsList = el.goodsList.concat(data.rows)
            }
          })
          _self.setData({
            productList: _self.data.productList
          })
        } else {
          _self.setData({
            hasMore: false
          })
        }
      }
    }, (code, error) => {
      wx.hideLoading({})
      _self.setData({
        isLoadMore: false
      })
      if (error.msg) {
        app.dialog.msg(error.msg)
      } else {
        wx.showToast({
          title: '网络错误',
          icon: 'error'
        })
      }
    })
  },
  onChange(e) {
    let _self = this
    let item = e.currentTarget.dataset.item
    this.setData({
      activeNames: e.detail,
      currentCatalogId: item.categoryId
    })
    console.log(e)
    if (e.detail.length > 1) {
      //展开
      if (item.goodsList || item.goodsList.length <= 0) {
        _self.getGoodsListByCId(item.categoryId)
      }
    }
  },
  doSearchGoods() {
    wx.navigateTo({
      url: './searchproduct?shopId=' + this.data.shopId,
    })
  },
  //加载更多
  doLoadMore(e) {
    let _self = this
    if (_self.data.hasMore) {
      if (_self.data.isLoadMore) {
        return
      }
      let item = _self.data.productList[_self.data.curIndex]
      _self.setData({
        isLoadMore: true,
        currentPage: ++_self.data.currentPage
      })
      _self.getGoodsListByCId(item.categoryId)
    } else {
      wx.showToast({
        title: '暂无更多数据',
        icon: 'none',
        duration: 500
      })
    }
  },
  doDelCategory(e) {
    let _self = this
    wx.showLoading({
      title: '删除中...',
    })
    app.restAjax.delete(app.restAjax.path(app.apis.doDelShopCategoryById, [app.baseUrls.tradeUrl, e.currentTarget.dataset.item.categoryId]), {}, {
      headers: {
        token: app.globalData.token
      }
    }, (code, data) => {
      wx.hideLoading({})
      if (code == 200) {
        _self.setData({
          productList: []
        })
        wx.showToast({
          title: '删除成功',
          icon: 'success'
        })
        _self.getShopCatalogList(_self.data.shopId)
      }
    }, (code, error) => {
      wx.hideLoading({})
      if (error.msg) {
        app.dialog.msg(error.msg)
      } else {
        wx.showToast({
          title: '网络错误',
          icon: 'error'
        })
      }
    })
  },
  showConfirmDialog(e) {
    let _self = this
    wx.showModal({
      title: '提示',
      content: '确定要删除该类目吗?(删除后该类目下所有商品将删除!)',
      success(res) {
        if (res.confirm) {
          _self.doDelCategory(e)
        } else {

        }
      }
    })
  },
  //列表添加购物车
  addToCart(e) {
    let _self = this
    let goods = e.currentTarget.dataset.item
    _self.data.productList[_self.data.curIndex].goodsList.forEach(it => {
      if (goods.goodsId == it.goodsId) {
        it.buyNum += 1
        if (it.buyNum > goods.goodsTotal) {
          it.buyNum = goods.goodsTotal
          wx.showToast({
            title: '超出库存',
            icon: 'error'
          })
        }
      }
    })
    this.selectComponent('#sCart').listAddToCart(goods)
    _self.setData({
      productList: _self.data.productList,
      shopCart: app.globalData.shopCart
    })
  },
  removeToCart(e) {
    let goods = e.currentTarget.dataset.item
    let _self = this
    _self.data.productList[_self.data.curIndex].goodsList.forEach(it => {
      if (goods.goodsId == it.goodsId) {
        it.buyNum -= 1
      }
    })
    this.selectComponent('#sCart').listRemoveCart(goods)
    _self.setData({
      productList: _self.data.productList,
      shopCart: app.globalData.shopCart
    })
  },
  //显示购物车弹框
  doShowCart() {
    var _self = this
    if (this.data.shopCart.length > 0) {
      //判断当前购物车是否存在该商店的商品
      var isExist = false
      this.data.shopCart.forEach(it => {
        if (it.shopId == _self.data.shopId) {
          isExist = true
        }
      })
      if (isExist) {
        if (this.data.isShowCart) {
          this.setData({
            isShowCart: false
          })
        } else {
          this.setData({
            isShowCart: true
          })
        }
      } else {
        wx.showToast({
          title: '购物车空空如也',
          icon: 'error'
        })
      }
    } else {
      wx.showToast({
        title: '购物车空空如也',
        icon: 'error'
      })
    }
  },
  //隐藏购物车弹框
  onHideCart() {
    this.setData({
      isShowCart: false
    })
  },
  //删除购物车中的商品
  delGoods(e) {
    let _self = this
    var index = e.currentTarget.dataset.index
    var goods = e.currentTarget.dataset.goods
    app.globalData.shopCart.splice(index, 1)
    //删除购物车中数据
    _self.selectComponent('#sCart').refreshCart()
    //将列表中的数据购买数量重置
    _self.data.productList[_self.data.curIndex].goodsList.forEach(it => {
      if (it.goodsId == goods.goodsId) {
        it.buyNum = 0
      }
    })
    _self.setData({
      productList: _self.data.productList,
      shopCart: app.globalData.shopCart
    })
    if (_self.data.shopCart.length <= 0) {
      _self.setData({
        isShowCart: false
      })
    }
  },
  //购物车弹框删除或添加商品
  onChange(e) {
    let buyNum = e.detail
    let goods = e.currentTarget.dataset.goods
    let _self = this
    //遍历列表
    _self.data.productList[_self.data.curIndex].goodsList.forEach(it => {
      if (it.goodsId == goods.goodsId) {
        it.buyNum = buyNum
      }
    })
    //遍历购物车
    _self.data.shopCart.forEach(it => {
      if (it.goodsId == goods.goodsId) {
        it.buyNum = buyNum
      }
    })
    //刷新视图
    _self.setData({
      productList: _self.data.productList,
      shopCart: _self.data.shopCart
    })
    //刷新购物车
    _self.selectComponent('#sCart').refreshCart()
  },
  onHide() {
    this.setData({
      isShowCart: false
    })
  }
})