classify.js 8.1 KB
// pages/classify/classify.js
let method = require("../../utils/reuqest.js");
const util = require("../../utils/util.js");
Page({
  data: {
    page: 1,
    classifyId: "",
    idx: 0, //商品规格索引
    check: false, //商品规格选择
    goodsData: '', //获取商品库存
    keyword: '',
    id: '',
    activeKey: 0,
    count: 1,
    stockNum: '',
    integral: '', //积分
    lableArray: [],
    lableOne: [],
    lableTwo: [],
    lableThree: [],
    list: [],
    location: '',
    latitude: '', //维度
    longitude: '', //经度
    bottomHint: false //触底提示
  },
  // tabbar
  toHome() {
    wx.reLaunch({
      url: '/pages/home/home',
    })
  },
  toShopCart() {
    wx.reLaunch({
      url: '/pages/shopping-cart/shopping-cart',
    })
  },
  toUser() {
    wx.reLaunch({
      url: '/pages/user/user',
    })
  },
  //获取定位
  getLocation() {
    let that = this;
    wx.getLocation({
      type: 'gcj02',
      success(res) {
        that.setData({
          latitude: res.latitude,
          longitude: res.longitude
        })
        that.location();
        const speed = res.speed
        const accuracy = res.accuracy
      }
    })
  },
  location() {
    let that = this
    let str = that.data.latitude + ',' + that.data.longitude;
    method.getRequest("/goods/geocoder/v1/" + str, data => {
      if (data.statusCode == 0) {
        that.setData({
          location: data.data.address
        })
      }
    })
  },
  //搜索框
  doSearch() {

  },
  getKeyWord(e) {
    this.setData({
      keyword: e.detail.value
    })
  },
  search() {
    if (this.data.keyword == '') {
      wx.showToast({
        title: '请输入商品名称',
        icon: 'none'
      })
      return false
    }
    wx.navigateTo({
      url: '/pages/searchRequest/searchRequest?keyword=' + this.data.keyword,
    })
  },
  // 导航菜单
  catalog() {
    method.getRequest('/category/getCategoryList', data => {
      if (data.statusCode == 0) {
        this.setData({
          lableArray: data.data
        })
        this.onData()
      }
    })
  },
  onChange(e) {
    let that = this;
    let list = that.data.lableArray;
    let id = e.currentTarget.dataset.id;
    this.setData({
      classifyId: id
    })
    that.dataRequest(id)
  },
  //第一次数据请求
  onData(id) {
    let postData = {
      categoryId:this.data.classifyId,
      page: this.data.page,
      size: 10
    }
    method.postRequest('/goods/list', postData, data => {
      let lists = this.data.page == 1 ? data.data : this.data.list.concat(data.data)
      if (data.statusCode == 0) {
        this.setData({
          list: lists
        })
      }
    })
  },
  //分类数据请求
  dataRequest: function (id) {
    this.setData({
      page:1
    })
    let postData = {
      categoryId: id,
      page: this.data.page,
      size: 10
    }
    method.postRequest('/goods/list', postData, data => {
      wx.stopPullDownRefresh()
      let lists = this.data.page == 1 ? data.data : this.data.list.concat(data.data)
      if (data.statusCode == 0) {
        this.setData({
          list: lists
        })
      }
    })
  },
  addCart(e) {
    let id = e.currentTarget.dataset.id
    this.setData({
      showMask: true
    })
    method.getRequest("/goods/" + id, data => {
      if (data.statusCode == 0) {
        this.setData({
          goodsData: data.data,
          stockNum: data.data.list[0].goodsStock
        })
      } else {
        setTimeout(() => {
          util.getUser()
        }, 2000)
      }
    })
  },
  closeMask() {
    this.setData({
      showMask: false
    })
  },
  confrimCart() {
    let postData = {
      goodsSkuId: this.data.skuId,
      num: this.data.count
    }
    method.postRequest("/cart", postData, data => {
      if (data.statusCode == 0) {
        this.setData({
          showMask: false
        })
        wx.showToast({
          title: "添加购物车成功",
          icon: 'success',
          duration: 1000
        })
      } else {
        wx.showToast({
          title: '请选择商品规格',
          icon: 'none',
          duration: 1000
        })
      }
    })
  },
  decNum() {
    let that = this
    let count = that.data.count
    if (that.data.count > 1) {
      count--
    } else {
      wx.showToast({
        title: '已经是最少了哦~',
        icon: 'none'
      })
    }
    that.setData({
      count
    })
  },
  addNum(e) {
    let that = this
    let count = that.data.count
    let stock = that.data.stockNum
    if (count < stock) {
      count++
    } else {
      wx.showToast({
        title: '不能超过库存哦~',
        icon: 'none'
      })
    }
    that.setData({
      count
    })
  },
  check(e) {
    let list = this.data.goodsData.list;
    let skuId = e.currentTarget.dataset.id;
    this.setData({
      idx: e.currentTarget.dataset.index,
      skuId: skuId
    })
  },
  //兑换
  exchange(e) {
    let jifenNum = e.currentTarget.dataset.integral;
    let defaultSku = e.currentTarget.dataset.defaultSku;
    wx.setStorageSync('defaultSku', e.currentTarget.dataset.defaultsku)
    //获取用户积分
    method.getRequest("/myUser/queryUserInfo", data => {
      if (data.statusCode == 0) {
        this.setData({
          integral: data.data.integral
        })
        if (jifenNum > this.data.integral) {
          wx.showToast({
            title: '您的积分目前不够兑换该商品',
            icon: 'none'
          })
          return false
        } else {
          wx.navigateTo({
            url: '/pages/integral-order/integral-order',
          })
        }
      } else {
        setTimeout(() => {
          util.getUser()
        }, 2000)
      }
    })

  },
  //商品详情
  goGoodsDetail(e) {
    let goodsId = e.currentTarget.dataset.id;
    wx.setStorageSync('goodsId', goodsId)
    wx.navigateTo({
      url: '/pages/product-detail/product-detail',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // this.dataRequest();
    this.catalog();
    if (wx.getStorageSync('categoryId')) {
      let id=wx.getStorageSync('categoryId')
      this.setData({
        classifyId: id
      })
      this.dataRequest(this.data.classifyId);
    } else {
      setTimeout(() => {
        this.setData({
          classifyId: this.data.lableArray[0].categoryId
        })
      }, 500)
      this.dataRequest(this.data.classifyId);
    }
    wx.removeStorageSync('categoryId')
    wx.removeStorageSync('index')
    this.catalog();
  },

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

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let categoryId = wx.getStorageSync('categoryId')
    let index = wx.getStorageSync('classifyIndex')
    if(index){
      this.setData({
        activeKey: index
      });
    }else{
      this.setData({
        activeKey:0
      })
    }
    wx.removeStorageSync("classifyIndex")
    let that = this;
    wx.getLocation({
      type: 'gcj02',
      success(res) {
        that.setData({
          latitude: res.latitude,
          longitude: res.longitude
        })
        that.location();
        const speed = res.speed
        const accuracy = res.accuracy
      },
      fail(errInfo) {
        console.info(errInfo)
      }
    })
  },

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

  },

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

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onRefresh() {
    this.setData({
      page: 1,
      list: []
    })
    this.dataRequest(this.data.classifyId);
  },
  onPullDownRefresh: function () {
    this.onRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    this.setData({
      page: Number(this.data.page) + 1
    })
    this.dataRequest(this.data.classifyId);
    this.setData({
      bottomHint: true
    })
    setTimeout(() => {
      this.setData({
        bottomHint: false
      })
    }, 2000)
  },

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

  }
})